0

我正在使用 Django 和 Satchmo 进行一些本地开发。当我通过管理员在本地上传产品图像时,图像的路径显示为绝对路径,包含驱动器号,而不是正确的相对路径。

更奇怪的是,Satchmo 将原始图像和它生成的缩略图都保存在我的/media/目录和/media/images/目录中,后者是我希望它们去的地方。

相关设置如下:

# 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 表示法。

4

2 回答 2

1

这是一个仅限 Windows 的错误。我正在 Windows 上开发一个 Satchmo 应用程序,它可以做到这一点,但是当我在 Linux 机器上部署时它工作得很好。当我在我的 Windows 机器上进行测试时,我只是进入数据库并在那里编辑路径。

于 2009-04-09T16:10:00.293 回答
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('\\', '/')
于 2009-04-11T00:00:29.437 回答