我的网站终于可以正常工作了,但在以下情况下无法提供媒体文件debug = False
我应该怎么办?我经历了地狱般的尝试让它与 nginx 一起工作本教程 https://www.digitalocean.com/community/tutorials/how-to-set-up-django-with-postgres-nginx-and-gunicorn-on-ubuntu-18-04但它总是崩溃并且不提供静态服务,所以我选择了纯gunicorn和白噪声。我真的不是部署专家,只是开发专家。请帮忙。
媒体文件的安全性不是问题,因为只有管理员才能上传它们,而最终用户则不能。
具体来说,我需要知道离开是否是世界末日debug = True
仅适用于媒体文件。或者如果有一种简单的方法可以为他们提供服务debug = False
.
你不应该使用DEBUG=True
在生产中,但如果您想在开发中测试 Whitenoise 并让您的媒体也能使用,这就是我提出的解决方案:
替换 urls.py 中的这一点:
if settings.DEBUG:
urlpatterns = [
# ... the rest of your URLconf goes here ...
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
with:
if settings.DEBUG or settings.STAGE == 'local':
urlpatterns.extend(
[re_path(r'^%s(?P<path>.*)$' % re.escape(settings.MEDIA_URL.lstrip('/')), serve, kwargs={'document_root': settings.MEDIA_ROOT})]
)
关键部分是有一个 STAGE 变量来指示您在哪个环境中运行该站点。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)