当Debug设置为False时,为什么Django会为静态媒体生成HTTP 500错误?
-
02-07-2019 - |
题
我正准备部署我的Django应用程序,我注意到当我更改“DEBUG”时设置为False,所有对静态文件的引用(即JavaScript,CSS等)都会导致 HTTP 500
错误。
知道导致该问题的原因(以及如何解决)?
解决方案
我强烈建议您让Web服务器处理静态请求,而不要访问Django。在我的 urls.py
中,我只在debug设置为True时添加静态请求处理程序。
从技术上讲,服务于静态的Django可以正常工作。绝对阅读简短的文档页面, http://docs.djangoproject.com/en的/ dev / HOWTO /静态文件/ 。您需要在 urls.py
(r'^static/(?P<path>.*), 'django.views.static.serve',
{'document_root': '/path/to/media'})
其他提示
听起来您可能正在尝试使用Django开发服务器来提供静态媒体。请查看 http://docs.djangoproject.com/en/dev/howto/某些部署方案/ howtos的部署/ 和 http:// docs .djangoproject.com / en / dev / howto / static-files / 如何提供静态文件(但请注意关于NOT在生产中使用这些方法的免责声明。)
一般情况下,我会查看您的服务器日志,并查看它从哪里获取文件。我怀疑500错误确实是404错误,但它们变成500错误,因为Django无法找到或呈现404.html模板。如果情况并非如此,那么如果你能发布你遇到的特定500错误会很有帮助。
您还必须检查遍布各处的网址。当DEBUG设置为False时,所有不带尾随“/”的URL。被视为一个bug,不像你有DEBUG = True,在这种情况下,Django将追加“/”它无处不在。因此,简而言之,确保所有链接都以斜线结束。
原来我已经注释掉了 SECRET_KEY
变量。虽然我无法知道。只需要尝试一下。