我遇到了settings.py
的以下示例:
if settings.DEBUG:
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
并被告知:
static()辅助函数适用于开发,但不适合生产使用。 永远不要在生产环境中使用Django提供静态文件。
谁能解释为什么以及如何更好地使用它?
编辑:
我可以在Apache中使用static()吗?
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可以找到它们。