2009-04-09 53 views
0

我正在使用Django和Satchmo进行一些本地开发。当我通过管理员在本地上传产品图像时,图像的路径显示为绝对路径,以驱动器盘符的形式显示,而不是正确的相对路径。当我在本地上传产品图片时,为什么我会在Satchmo中获得绝对的网址?

更奇怪的是,的Satchmo节省了原始图像和它产生在两个缩略图我/media/目录和/media/images/目录,后者在这里我想他们去。

的relavent设置如下:

# path relative to the settings.py file 
DIRNAME = os.path.abspath(os.path.dirname(__file__).decode('utf-8')) 

MEDIA_ROOT = os.path.join(DIRNAME, 'media') 
MEDIA_URL = 'http://localhost:8000/' 
ADMIN_MEDIA_PREFIX = '/media/' 

我就像三重检查local_settings.py文件,并没有所说的“媒体”在任何地方提到,所以我敢肯定,有没有设置覆盖。

如果有帮助,我在Windows上,但我正在使用适合我的路径的unix符号。

回答

1

原来的问题是settings.py文件中的斜杠方向有问题。

通常情况下,我创造我的settings.py文件relative_path()功能,这样我就可以轻松设置:

MEDIA_ROOT = absolute_path('media') 

我使用的Satchmo的版本鼓励使用DIRNAME的设置,而不是:

DIRNAME = os.path.abspath(os.path.dirname(__file__).decode('utf-8') 

的问题是,使用这种技术,我MEDIA_ROOT被设定为这样:

MEDIA_ROOT = os.path.join(DIRNAME, 'media') 

但是,这是使用Windows反斜杠而不是Unix正斜杠。我已经解决它:

MEDIA_ROOT = os.path.join(DIRNAME, 'media').replace('\\', '/') 
1

这是一个Windows唯一的错误。我正在Windows上开发一个Satchmo应用程序,它是这样做的,但是当我在Linux上部署时,它工作得很好。我刚进入数据库并在我的Windows盒子上进行测试时编辑路径。

相关问题