【发布时间】:2020-12-25 08:18:39
【问题描述】:
我正在尝试在 Heroku 上部署我的 Django 应用程序。每当我转到我的应用程序时,我都会收到错误消息:
2020-09-06T20:31:59.000436+00:00 app[web.1]: raise ImproperlyConfigured("The SECRET_KEY setting must not be empty.")
2020-09-06T20:31:59.000477+00:00 app[web.1]: django.core.exceptions.ImproperlyConfigured: The SECRET_KEY setting must not be empty
我现在有两个设置文件,所以在我的项目文件夹中包含wsgi.py。我有一个名为settings/ 的文件夹:
settings
--common.py
--development.py
--productions.py
在我的production.py 我有:
from register.settings.common import *
import os
import django_heroku
DEBUG = False
ALLOWED_HOSTS = ['0.0.0.0', 'localhost', '127.0.0.1','appname.heroku.com']
SECRET_KEY = os.environ.get('SECRET_KEY')
EMAIL_HOST_USER = os.environ.get('EMAIL_HOST_USER')
EMAIL_HOST_PASSWORD = os.environ.get('EMAIL_HOST_PASSWORD')
STATICFILES_STORAGE = 'whitenoise.storage.CompressedManifestStaticFilesStorage'
django_heroku.settings(locals())
在我的wsgi.py 和manage.py 我有:
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'register.settings.production')
现在我已经从仪表板添加了 Postgres 插件,并且可以使用 Heroku CLI 检查我是否也拥有它。
我还添加了一个自定义域名www.myapp.com,我不知道这是否会导致问题。
为了推动掌握,我做到了:
heroku config:set DISABLE_COLLECTSTATIC=1
然后:
git push heroku master
是什么导致了这个问题?当我执行python manage.py run server 时,我也会收到错误消息:
raise ImproperlyConfigured("The SECRET_KEY setting must not be empty.")
django.core.exceptions.ImproperlyConfigured: The SECRET_KEY setting must not be empty.
当我检查时,我的 Heroku 日志中也出现此错误,如何设置密钥?
编辑 2
问题似乎与我的celery.py 文件有关,但是,我尝试将设置更改为指向production.py(在我的项目根文件夹中注册):
from __future__ import absolute_import
import os
from celery import Celery
from django.conf import settings
import django
app = Celery('register')
app.config_from_object('django.conf:settings', namespace='CELERY')
app.autodiscover_tasks(settings.INSTALLED_APPS)
在我的manage.py 我有:
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'register.settings.development') manage.py runserver 命令可以工作,但是现在我得到一个错误:
8:52:21 PM web.1 | raise ImproperlyConfigured("The SECRET_KEY setting must not be empty.")
8:52:21 PM web.1 | django.core.exceptions.ImproperlyConfigured: The SECRET_KEY setting must not be empty.
在我的 wsgi.py 文件的这一行中:
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'register.settings.production')
application = get_wsgi_application()
【问题讨论】:
-
你设置了
SECRET_KEYconfig var(环境变量)吗?
标签: python django heroku celery