1

我正在尝试在我的 Django 安装中安装 django-avatar。我一生无法弄清楚的是 MEDIA_ROOT 和 MEDIA_URL 路径哪里出错了。

头像目前正在上传到我本地的正确位置:<* project *>/media/avatars/...

但是,当我点击/avatars/change/时,正在使用本地绝对路径提供图像:

/Users/<* 用户名>/< project_path *>/media/avatars/....jpg

在我的 settings.py 中,我设置了以下变量:

PROJECT_PATH = os.path.realpath(os.path.dirname(__file__))
MEDIA_ROOT = os.path.join(PROJECT_PATH, 'media')
MEDIA_URL = '/media/'
AVATAR_STORAGE_DIR = MEDIA_ROOT + '/avatars/'

在我的 urls.py 中,我有:

if settings.DEBUG:
    urlpatterns += patterns('',
        url(r'^media/(?P<path>.*)$', 'django.views.static.serve', {
            'document_root': settings.MEDIA_ROOT,
        }),
        url(r'^static/(?P<path>.*)$', 'django.views.static.serve', {
            'document_root': settings.STATIC_ROOT,
        }),
    )

我认为问题一定出在应用程序级别,而不是在我的项目设置中。如果有人可以提供帮助,那就太棒了!

4

1 回答 1

1

根据我的经验,这是使用开发服务器时的标准行为。Django 开发服务器正在为静态文件提供服务,并从 MEDIA_ROOT(完整的本地路径)提供服务。

部署时,静态文件应与您的 Web 服务器一起提供,并且 URL 将反映您期望的 MEDIA_URL。

可能值得阅读 Django 的关于管理静态文件的文档。

于 2012-11-04T16:16:24.857 回答