为什么不在生产环境中使用 Django 提供静态文件?

2023-12-26

我遇到了以下示例settings.py:

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

并被告知:

static() 辅助函数适合开发,但不适用于 生产用途。切勿在 Django 中使用静态文件 生产环境。

谁能解释为什么以及如何更好地使用它?

EDIT:

我可以在 Apache 中使用 static() 吗?


Django 提供静态文件的速度不是很快,效率也不是很高。引用 Django 文档,“这种方法效率极低,而且可能不安全,因此不适合生产。”最好使用专门为提供静态内容而设计的工具。 Django 文档中有关于如何设置静态服务器的详细说明部署静态文件 https://docs.djangoproject.com/en/1.10/howto/static-files/deployment/.

基本思想是不要不必要地让 Django 参与静态文件的服务。让你的生产服务器(从你的评论来看,它听起来像是 apache)直接提供静态文件。以下是编辑 httpd.conf 文件以使 apache 提供静态文件的说明https://docs.djangoproject.com/en/1.10/howto/deployment/wsgi/modwsgi/#serving-files https://docs.djangoproject.com/en/1.10/howto/deployment/wsgi/modwsgi/#serving-files。 django 中的 static() 函数根本不应该参与其中。确保使用 django 中的collectstatic管理命令将所有静态文件复制到STATIC_ROOT,以便apache可以找到它们。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么不在生产环境中使用 Django 提供静态文件? 的相关文章

随机推荐