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

6
我正准备部署我的Django应用程序时,我注意到当我将“DEBUG”设置为False时,所有静态文件的引用(即JavaScript、CSS等)都会导致HTTP 500错误。你有什么想法是什么原因造成了这个问题(以及如何解决它)?
4个回答

12

我强烈建议让你的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'})

哈。看看我的urls.py可能会有所帮助。我已经把那个设置都搞定了。唉...这是一个漫长的开发周期。 :) - Huuuze

6
看起来您可能正在尝试使用Django开发服务器提供静态媒体服务。请查看http://docs.djangoproject.com/en/dev/howto/deployment/以获取一些部署方案/操作指南,以及http://docs.djangoproject.com/en/dev/howto/static-files/了解如何提供静态文件(但请注意不要在生产环境中使用这些方法)。
通常,我会查看您的服务器日志,看它从哪里尝试获取文件。我怀疑500错误实际上是404错误,但由于Django找不到或呈现404.html模板,它们变成了500错误。如果不是这种情况,如果您能发布特定的500错误,那将非常有帮助。

0
事实证明,我已经注释掉了“SECRET_KEY”变量。但是我不知道这一点。只能不断尝试。

0

你还必须在各个地方检查你的URL。当DEBUG设置为False时,所有没有尾随“/”的URL都被视为错误,而当DEBUG = True时,Django会在缺少“/”的地方自动添加。因此,简而言之,请确保所有链接在任何地方都以斜杠结尾。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接