Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 白噪声和/或静态文件导致服务器错误(500)_Python_Django_Heroku - Fatal编程技术网

Python 白噪声和/或静态文件导致服务器错误(500)

Python 白噪声和/或静态文件导致服务器错误(500),python,django,heroku,Python,Django,Heroku,当DEBUG=True时,我可以将我的应用程序(通过Django)部署到Heroku,但当DEBUG=False时,我会收到一个服务器错误。我认为这与我如何设置静态文件有关。当我注释掉“STATICFILES\u STORAGE='whitenoise.django.GzipManifestStaticFilesStorage'”时,我没有收到错误消息,但该站点完全未格式化。以下是相关的settings.py代码: INSTALLED_APPS = [ ... 'django.c

当DEBUG=True时,我可以将我的应用程序(通过Django)部署到Heroku,但当DEBUG=False时,我会收到一个服务器错误。我认为这与我如何设置静态文件有关。当我注释掉“STATICFILES\u STORAGE='whitenoise.django.GzipManifestStaticFilesStorage'”时,我没有收到错误消息,但该站点完全未格式化。以下是相关的settings.py代码:

INSTALLED_APPS = [
...    
    'django.contrib.staticfiles',
...
]

ALLOWED_HOSTS = ['*']

PROJECT_ROOT = os.path.dirname(os.path.abspath(__file__))

STATIC_ROOT= os.path.join(PROJECT_ROOT, 'staticfiles')
STATIC_URL = '/static/'
STATICFILES_STORAGE = 'whitenoise.django.GzipManifestStaticFilesStorage'


STATICFILES_DIRS = (
    os.path.join(PROJECT_ROOT, 'static'),
)
我在各种位置添加了我的静态文件夹(与settings.py相同的文件夹,在根文件夹中,等等),但都没有用


有什么想法吗?

这些静态文件设置直接来自Heroku网站()。当我运行
python manage.py collectstatic
时,我得到一个关键错误“DATABASE\u URL”,我必须
为其导出一个值,然后当我将文件推送到Heroku时,网站正常工作。

您可能忘记了在settings.py中间件设置中包含whitenoice中间件。编辑settings.py文件并将WhiteNoise添加到中间件类列表中,除Django的SecurityMiddleware之外的所有其他中间件都是:

MIDDLEWARE_CLASSES = [
# 'django.middleware.security.SecurityMiddleware',
'whitenoise.middleware.WhiteNoiseMiddleware',
#...
]
更多信息可在whitenoise文档中找到:


一步一步地进行设置,看看您缺少了什么。Heroku文档倾向于忽略中间件的添加——这会导致错误——并且您的应用程序可能还缺少其他东西。

运行
python manage.py collectstatic
&再试一次,并包括错误内容,而不是500,设置DEBUG=False&try
python manage.py runserver
,&检查堆栈跟踪作为一般规则,您应该避免在生产中使用django runserver和StaticFile。您只能出于开发目的使用它们。不相关但很重要:为了安全起见,请在
允许的\u主机设置中指定您实际使用的域。不要使用
允许的\u HOSTS=['*']
,尽管这可能有点反模式。有关相关文档,请参阅。