仅使用gunicorn、django 和whitenoise 如何为媒体提供服务?

2024-01-08

我的网站终于可以正常工作了,但在以下情况下无法提供媒体文件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(使用前将#替换为@)

仅使用gunicorn、django 和whitenoise 如何为媒体提供服务? 的相关文章

随机推荐