当Debug设置为False时,Django为什么会为静态媒体生成HTTP 500错误?

时间:2020-03-06 14:36:26  来源:igfitidea点击:

我正在准备部署Django应用,并且注意到当我将" DEBUG"设置更改为False时,所有对静态文件的引用(即JavaScript,CSS等)都会导致" HTTP 500"错误。

我们知道导致该问题的原因(以及解决方法)吗?

解决方案

我强烈建议我们让Web服务器处理静态请求,而无需使用Django。在我的" urls.py"中,仅在将debug设置为True时添加静态请求处理程序。

从技术上讲,提供静态功能的Django可以正常运行。一定要阅读简短的文档页面,http://docs.djangoproject.com/en/dev/howto/static-files/。我们将要在urls.py中使用这样的条目

(r'^static/(?P<path>.*)$', 'django.views.static.serve',
    {'document_root': '/path/to/media'})

听起来我们可能正在尝试使用Django开发服务器来提供静态媒体。看看http://docs.djangoproject.com/en/dev/howto/deployment/了解一些部署方案/ howtos,以及http://docs.djangoproject.com/en/dev/howto/static-files/了解如何提供静态文件(但请注意有关在生产中不使用这些方法的免责声明)。

通常,我将查看服务器日志,并查看其试图从中获取文件的位置。我怀疑这500个错误实际上是404错误,但由于Django无法找到或者呈现404.html模板,因此它们变成了500个错误。如果不是这种情况,则可以发布我们遇到的特定500个错误,这将很有帮助。