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

问题描述 投票:3回答:1

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

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

并被告知:

static()辅助函数适用于开发,但不适合生产使用。 永远不要在生产环境中使用Django提供静态文件。

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

编辑:

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

python django apache static settings
1个回答
4
投票

Django提供静态文件的速度和效率都不是很快。 引用Django文档,“这种方法非常低效,可能不安全,因此不适合生产。” 最好使用专门用于提供静态内容的工具。 有关如何在部署静态文件的Django文档中设置静态服务器的详细说明。

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

© www.soinside.com 2019 - 2024. All rights reserved.