媒体文件未在 DEBUG=False Django 2.2.6 中显示
Posted
技术标签:
【中文标题】媒体文件未在 DEBUG=False Django 2.2.6 中显示【英文标题】:Media Files not shown in DEBUG=False Django 2.2.6 【发布时间】:2020-04-12 23:31:45 【问题描述】:在调试模式下一切正常,但在调试 id false 时无法在生产环境中显示媒体文件
这是我的设置
TEMPLATES = [
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [TEMPLATES_DIR,],
'APP_DIRS': True,
'OPTIONS':
'context_processors': [
'django.template.context_processors.request',
'django.template.context_processors.debug',
'django.contrib.auth.context_processors.auth',
'django.template.context_processors.csrf',
'django.contrib.messages.context_processors.messages',
'django.template.context_processors.static',
'django.template.context_processors.media',
],
,
,
]
TEMPLATE_CONTEXT_PROCESSORS = (
"django.core.context_processors.request",
"django.core.context_processors.debug",
"django.core.context_processors.auth",
"django.core.context_processors.i18n",
"django.core.context_processors.media",
)
STATIC_DIR = os.path.join(BASE_DIR, 'static')
STATIC_URL = '/static/'
STATICFILES_DIRS = [STATIC_DIR,]
STATIC_ROOT = os.path.join(BASE_DIR, 'staticroot')
# Media folder for database media
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
和项目网址
if settings.DEBUG:
urlpatterns += static(
settings.STATIC_URL,
serve,
document_root=settings.STATIC_ROOT
)
urlpatterns += static(
settings.MEDIA_URL,
serve,
document_root=settings.MEDIA_ROOT
)
虽然 url 链接路径使用模板标签完美显示
% load staticfiles %
<a href=" magazine.document.url " target="_blank">
<i class='far fa-file-pdf'></i>
</a>
希望您能帮助解决这个问题。
【问题讨论】:
您设置了网络服务器吗?当 DEBUG=False 时,静态文件不会进行 url 解析。通常在生产环境中,您的 nginx(或 Apache)服务器将是为您的静态资产提供服务的服务器。 @MattSeymour 不,我没有设置 Web 服务器 .. 我只是在我的 PC 上收集静态文件,所有静态文件都可以正常工作 .. 但是当调试模式为 False 时媒体文件不显示 .. 这是使用 cpanel 平台在我的托管服务器上出现同样的问题 cpanel的日志有错误吗?可能是权限问题。 @MattSeymour 我认为这与 cpanel 相关,因为.. 我现在尝试调试 True 它给了我 Raised by:django.views.static.serve .. 但是,对于媒体图像工作正常.. 这个仅适用于 PDF 文件的错误 当调试为真时,您将通过 urls.py 中的if settings.DEBUG:
提供媒体文件。确实不建议在 DEBUG=True 时提供静态文件,也不应将其视为解决方案。问题出在您的 cpanel 配置中(我对此知之甚少)。可能值得在 cpanel 表单上重新表述您的问题,因为它不是特定于 django 的问题,而是配置问题。
【参考方案1】:
这是我的错 PDF 文件必须由第三方查看器下载或查看。对于调试模式,当调试为 False 时,我必须让 Apache 服务器正常工作...希望这有助于任何遇到同样问题的人
【讨论】:
以上是关于媒体文件未在 DEBUG=False Django 2.2.6 中显示的主要内容,如果未能解决你的问题,请参考以下文章
Apache Django 静态文件不提供 DEBUG=False [重复]
当 debug=false 时 Django 媒体文件不起作用
为啥当 Debug 设置为 False 时,Django 会为静态媒体生成 HTTP 500 错误?
Django 在 debug = False 时找不到我的媒体文件夹