一尘不染

Django MEDIA_URL和MEDIA_ROOT

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模式吗?

任何建议表示赞赏。


阅读 779

收藏
2020-03-25

共1个答案

一尘不染

Django> = 1.7的更新

根据Django 2.1文档:在开发过程中提供用户上传的文件

from django.conf import settings
from django.conf.urls.static import static

urlpatterns = patterns('',
    # ... the rest of your URLconf goes here ...
) + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

if settings.DEBUG将不再需要,因为Django将确保仅在调试模式下使用它。

Django <= 1.6的原始答案

尝试将其放入你的urls.py

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}))

有了它,你可以在Django DEBUG = True(当在本地计算机上运行时)提供静态媒体服务,但可以让你的Web服务器配置在投入生产和生产时提供静态媒体服务。DEBUG = False

2020-03-25