代码之家  ›  专栏  ›  技术社区  ›  Soviut

当我在本地上传产品图片时,为什么要在satchmo中获取绝对URL?

  •  0
  • Soviut  · 技术社区  · 16 年前

    我正在使用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/'
    

    我已经检查了本地_settings.py文件,其中没有提到“media”这个词,因此我确信没有设置覆盖。

    如果有帮助的话,我使用的是Windows,但是我的路径使用的是所有适当的Unix符号。

    2 回复  |  直到 16 年前
        1
  •  1
  •   Jason Christa    16 年前

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

        2
  •  1
  •   Soviut    16 年前

    结果发现,问题在于settings.py文件中的斜线方向有问题。

    通常,我创建一个 relative_path() 在我的settings.py文件中运行,以便轻松设置:

    MEDIA_ROOT = absolute_path('media')
    

    我使用的Satchmo版本鼓励使用dirname设置:

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

    问题是,使用这种技术,我的媒体根目录设置如下:

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

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

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