【问题标题】:Django - media files not being shown on websiteDjango - 媒体文件未显示在网站上
【发布时间】:2018-08-27 11:17:40
【问题描述】:

我遇到了用户上传的内容没有显示在网页上的问题。我在使用我的开发 settings.py 文件时可以 100% 工作,但这在我的实时站点上不起作用。

一些注意事项

  1. 我的静态文件在我的实时网站上 100% 正常工作。
  2. 当用户在我的实时网站上上传内容时,文件会发布到正确的文件夹(即我在 settings.py 文件中指定的文件夹)
  3. 在呈现网页并调查损坏的链接时,对我来说,链接看起来是正确的。换言之,图片存在于所指示的链接中。

这是我在 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 时,汽车图像会加载到浏览器中。结果,我对为什么媒体文件不起作用感到困惑......

谢谢

【问题讨论】:

  • 大概你在生产中配置了一些东西来提供静态文件。您需要对媒体文件执行相同操作。
  • 我的理解是,由于 settings.py 文件中的 MEDIA_ROOT 声明,媒体文件应该从“/home/jasonhoward/webapps/site_media/”上传到网页并提供给网页。一个声明似乎适用于我的开发环境。
  • 上传到那里,是的。但是什么在为他们服务?正如我所说,为了让静态文件正常工作,您必须配置您的 Web 服务器来为它们提供服务。您也需要对媒体文件执行此操作。
  • @JasonHoward 它可以在您的开发环境中使用,因为您拥有urlpatterns if settings.DEBUG。您没有提供生产环境的详细信息,但您必须将其配置为在/home/jasonhoward/webapps/site_media//media 提供文件。
  • @Paulo Almeida 如果“if settings.Debug”导致问题,为什么常规静态文件而不是生产中的媒体文件可以工作?

标签: django media


【解决方案1】:

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

【讨论】:

  • 这很公平。我确实计划迁移到 Amazon S3,但我从我的虚拟主机提供媒体文件和静态文件这一事实不应该导致这个问题,对吧?
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-07-09
    • 2017-07-19
    • 2020-04-12
    • 1970-01-01
    • 2021-01-30
    • 1970-01-01
    • 2020-01-15
    • 2021-10-12
    相关资源
    最近更新 更多