我正在尝试通过 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 模式?
感谢任何建议。
谢谢。
最佳答案
Django 更新 >= 1.7
根据 Django 2.1 文档:Serving files uploaded by a user during development
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 会处理确保它仅在 Debug模式下使用。
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}))
有了这个,当 DEBUG = True
(当你在本地计算机上运行时),你可以从 Django 提供静态媒体,但是你可以让你的网络服务器配置在你进入生产时提供静态媒体,并且 DEBUG = False
关于python - Django MEDIA_URL 和 MEDIA_ROOT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5517950/