【问题标题】:Strange MEDIA_ROOT location奇怪的 MEDIA_ROOT 位置
【发布时间】:2015-02-08 01:39:34
【问题描述】:

我正在为管理页面使用所见即所得的编辑器。所以我可以在我的文章中添加一些图片。首先,在settings.py我写道:

REDACTOR_UPLOAD = '/media/uploads/'
MEDIA_ROOT = '/media/'
MEDIA_URL = '/media/'

在这种情况下,所有上传的图像都在C:\media\uploads 中。它正在工作。

但我需要图像位于项目文件夹中。所以我写:

REDACTOR_UPLOAD = os.path.abspath('/media/uploads/')
MEDIA_ROOT = os.path.abspath('media')
MEDIA_URL = '/media/'

然后图片位置:src="/media/C%3A/virtenvs/web/src/mysite/media/uploads/CAM00415.jpg" 但是在调试settings.py的时候,MEDIA_ROOT = 'C:\\virtenvs\\web\\src\\mysite\\media'

为什么?

【问题讨论】:

    标签: django django-templates django-media


    【解决方案1】:

    您在MEDIA_ROOT 中放置了一个相对路径,在REDACTOR_UPLOAD 中放置了一个绝对路径。在交互式控制台中比较以下两个:

    >>> os.path.abspath('media/')
    C:\\Users\\<username>\\media
    >>> os.path.abspath('/media/')
    C:\\media
    

    C:\Users\&lt;username&gt; 是这里的当前工作目录。除非您使用绝对路径(以/ 开头),否则abspath 中的路径将附加到您的当前目录。 django 的工作目录似乎是C:\virtenvs\web\src\mysite,这似乎也是您项目的目录,因此在这种情况下,对这两个设置使用相对路径应该可以工作:

    REDACTOR_UPLOAD = os.path.abspath('media/uploads/')
    MEDIA_ROOT = os.path.abspath('media/')
    

    【讨论】:

    • 我按照你说的做了,但是img里面的路径不对:
    • 为什么 media 是 'src' 中的第一个文件夹?也许是因为所见即所得的编辑器?
    【解决方案2】:

    MEDIA_ROOT must be an absolute filesystem path,例如:

    MEDIA_ROOT = 'C://media/'
    

    将其放入项目文件夹中:

    BASE_DIR = os.path.dirname(os.path.dirname(__file__))
    
    MEDIA_ROOT = os.path.join(BASE_DIR, '..', 'media').replace('\\','/')
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多