在将Django应用程序部署到Heroku时,如果在访问Django Admin URL时遇到500错误,可能是由于以下原因之一:
whitenoise
或其他静态文件服务器来处理静态文件。确保你已经安装并配置了whitenoise
。在你的settings.py
文件中,添加以下配置:
pythonMIDDLEWARE = [ 'whitenoise.middleware.WhiteNoiseMiddleware', # ... ] STATICFILES_STORAGE = 'whitenoise.storage.CompressedManifestStaticFilesStorage'
然后,确保你已经运行了收集静态文件的命令:
bashheroku run python manage.py collectstaticsettings.py
文件中正确配置了ALLOWED_HOSTS
。对于Heroku,你需要添加你的应用程序的域名。你可以通过以下方式获取:
pythonimport os ALLOWED_HOSTS = ['your-app-name.herokuapp.com']
或者,你可以动态地添加允许的主机:
pythonimport dj_database_url import django_heroku # ... ALLOWED_HOSTS = ['*'] # 允许所有主机,仅用于开发环境 # 在Heroku上部署时,设置ALLOWED_HOSTS if 'DYNO' in os.environ: heroku_app_name = os.environ.get('HEROKU_APP_NAME') ALLOWED_HOSTS = [f'{heroku_app_name}.herokuapp.com']DATABASES
设置正确配置为使用Heroku的PostgreSQL数据库。Heroku会自动设置DATABASE_URL
环境变量,你可以使用dj_database_url
库来解析它:
pythonimport dj_database_url DATABASES = { 'default': dj_database_url.config(default=os.environ.get('DATABASE_URL')) }SECRET_KEY
在生产环境中是安全的,并且没有泄露。不要将SECRET_KEY
硬编码在代码中,而是使用环境变量来设置:
pythonimport os SECRET_KEY = os.environ.get('DJANGO_SECRET_KEY')
然后在Heroku上设置DJANGO_SECRET_KEY
环境变量。领取专属 10元无门槛券
手把手带您无忧上云