如果我直接从命令行执行runserver
或gunicorn
,网站就可以正常运行。但是,如果我尝试使用Heroku documentation中指定的Foreman运行gunicorn:
web: gunicorn myapp.wsgi
然后我的网站的静态文件突然无法访问;试图去
http://0.0.0.0:5000/static/js/jquery-1.9.1.min.js
只给我这个错误信息:
Using the URLconf defined in myapp.urls, Django tried these URL patterns, in this order:
^$ [name='homepage']
...
The current URL, static/js/jquery-1.9.1.min.js, didn't match any of these.
You're seeing this error because you have DEBUG = True in your Django settings file. Change that to False, and Django will display a standard 404 page.
正如我所说的,如果直接调用gunicorn或runserver,或者即使将runserver
与foreman start
一起使用,也可以访问静态文件,所以我猜它没有太多我的静态文件设置?
此外,使用DEBUG = False
在领班上运行gunicorn甚至不会返回任何内容,除了500错误。什么都没记录,甚至没有记录在Sentry上,所以我不知道出了什么问题。它也可以单独使用gunicorn或runserver,或者使用带有工头的runserver。
我有什么想法可以解决这个问题?
答案 0 :(得分:1)
不知道为什么没有检索静态文件,但DEBUG = False
500错误只是由我的ALLOWED_HOSTS
设置引起的,并且修复不会产生进一步的问题。
答案 1 :(得分:0)
我会尝试在gunicorn下运行时打印设置,看看你的媒体网址是否正确,js文件是否确实可访问。
至于500错误,它可能试图向您显示404页面,但是您没有它的模板,因此它会引发500,而旧的django quirk;)
PS。这一切都假设您已验证该错误中的URL模式正确