Django - 媒体文件未在网站上显示

时间:2018-03-18 23:10:47

标签: django media

我遇到的问题是用户上传的内容没有显示在网页上。我有100%使用我的开发settings.py文件,但这不适用于我的实时网站。

几个笔记

  1. 我的静态文件在我的实际网站上正常运行。
  2. 当用户在我的实际网站上传内容时,该文件会发布到正确的文件夹(即我在settings.py文件中指定的文件夹)
  3. 当渲染网页,并且调查断开的链接时,对我来说,看起来链接是正确的。换句话说,图像存在于指示的链接处。
  4. 以下是settings.py中的媒体设置:

    MEDIA_URL = '/media/'
    MEDIA_ROOT = '/home/jasonhoward/webapps/site_media/'
    

    如果用户上传cat.jpg,我已确认它已成功保存到'/ home / jasonhoward / webapps / site_media /'

    现在,当用户导航到他们的个人资料上的图片库时,应该出现的是猫的图像。相反,会出现断开的链接。根据Chrome Inspect工具,图片的地址为“/media/cat.jpg”。

    对我来说,链接地址似乎正确,应该显示图像。这几乎就像文件路径是正确的,但系统出于某种原因限制了对该图像的访问。这可能吗?

    我能想到的另一件事就是在urls.py主文件中,我有以下代码:

    if settings.DEBUG:
        urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
        urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)   
    

    生产中的调试模式设置为False。我已经尝试删除'if settings.DEBUG'行,但这不会改变任何行为。

    我应该提一下我的静态文件设置如下:

    STATIC_URL = '/static/' 
    STATIC_ROOT = '/home/jasonhoward/webapps/site_static/' 
    STATICFILES_DIRS = (os.path.join(BASE_DIR, 'assets', 'our_static'),)
    

    当我访问www.mysite.com/static/images/car.jpg时,汽车图像会在浏览器中加载。结果,我很困惑为什么媒体文件不起作用......

    由于

2 个答案:

答案 0 :(得分:0)

你真的不应该依赖于通过Django提供静态或媒体文件。相反,您应该配置您的http服务器(nginx,apache,lighttpd等)直接为它们提供服务。

答案 1 :(得分:0)

确保在主django应用的static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)文件中添加urls.py