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

时间:2016-08-09 21:18:00

标签: python django apache static settings

我看到settings.py的以下示例:

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

并被告知:

  

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

任何人都可以解释为什么以及如何更好地使用它?

编辑:

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

1 个答案:

答案 0 :(得分:4)

Django提供静态文件的速度和效率都不是很快。引用Django文档,“这种方法非常低效,可能不安全,因此不适合生产。”最好使用专门用于提供静态内容的工具。有关如何在deploying static files上的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可以找到它们。