Django的MEDIA_URL和MEDIA_ROOT


注意: Django开发阶段(调试阶段debug=True)是媒体文件由Django管理,在实际项目运行阶段由你的服务器管理。

我正在尝试通过Django管理员上传图像,然后在前端的页面中或通过URL查看该图像。

请注意,这都在我的本地计算机上。

我的设置如下:

MEDIA_ROOT = '/home/dan/mysite/media/'
MEDIA_URL = '/media/'

我已将upload_to参数设置为'images',并且文件已正确上传到目录:

'/home/dan/mysite/media/images/myimage.png'

但是,当我尝试访问以下URL的图像时:

http://127.0.0.1:8000/media/images/myimage.png

我收到404错误。

我是否需要为上传的媒体设置特定的URLconf模式?

解决这个问题,可以修改一下url配置:

from django.conf import settings

# ... your normal urlpatterns here

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

有了这个,您可以在DEBUG = True(当您在本地计算机上运行时)从Django 提供静态媒体,但是当您进入制作时,您可以让您的Web服务器配置提供静态媒体。DEBUG = False