0

我正在为管理页面使用所见即所得的编辑器。所以我可以在我的文章中添加一些图片。首先,在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'

为什么?

4

2 回答 2

0

你把一个相对路径MEDIA_ROOT和一个绝对路径放在REDACTOR_UPLOAD. 在交互式控制台中比较以下两个:

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

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

REDACTOR_UPLOAD = os.path.abspath('media/uploads/')
MEDIA_ROOT = os.path.abspath('media/')
于 2014-12-10T00:54:29.257 回答
0

MEDIA_ROOT 必须是绝对文件系统路径,例如:

MEDIA_ROOT = 'C://media/'

使其在项目文件夹中:

BASE_DIR = os.path.dirname(os.path.dirname(__file__))

MEDIA_ROOT = os.path.join(BASE_DIR, '..', 'media').replace('\\','/')
于 2014-12-10T00:55:21.760 回答