python - Django MEDIA_URL 和 MEDIA_ROOT

标签 python python-3.x django media django-media

我正在尝试通过 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/

相关文章:

linux - 如何使用 Linux shell 脚本在 Django 中创建 super 用户?

python - 为什么在 cython 函数中请求 numpy 数组的形状时我得到 8 个维度?

python - 有效地字典列表中的唯一元素

list - python : create a pandas data frame from a list

python - 在 python 中打印模式时出现错误

sql - Django 将模型转换为 sql 代码

javascript - 如何使用 jQuery 处理 JSON 编码的字符串

python - 无法在 Python 中重现有效的 C 按位​​编码函数

python - 在 django 中保存或删除时自动填充多态表

python - 如何将 Octave 添加到我的 PATH 以使用 oct2py?