当 Django Heroku 应用程序中的调试切换到 False 时,网站返回 500 错误



我有一个托管在Heroku上的Django应用程序。当调试设置为 true 时,一切正常,但是当我将调试设置为 false 时,它会返回 500 错误。我非常确定这与我渲染静态文件的方式有关。我的应用在生产环境中似乎找不到我的静态文件。

urlpatterns = [
path('admin/', admin.site.urls),
path('', include('main.urls')),
path('', include('moderator.urls')),
path('accounts/', include('allauth.urls')),]
handler404 = main_views.error_404
handler500 = main_views.error_500
if settings.DEBUG:
urlpatterns +=static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
urlpatterns +=static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

以下是我的应用程序中有关静态文件存储的所有内容(我还设置了 amazon s3 来处理用户上传(:

STATICFILES_DIRS = (
os.path.join(BASE_DIR, 'static'),
)
STATICFILES_STORAGE = 'whitenoise.storage.CompressedManifestStaticFilesStorage'

MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
'whitenoise.middleware.WhiteNoiseMiddleware',
]
DEFAULT_FILE_STORAGE = 'storages.backends.s3boto3.S3Boto3Storage'
STATICFILES_STORAGE = 'storages.backends.s3boto3.S3Boto3Storage'
AWS_ACCESS_KEY_ID = os.environ.get('AWS_ACCESS_KEY_ID', '')
AWS_SECRET_ACCESS_KEY = os.environ.get('AWS_SECRET_ACCESS_KEY', '')
AWS_STORAGE_BUCKET_NAME = os.environ.get('S3_BUCKET', '')
AWS_QUERYSTRING_AUTH = False
AWS_S3_CUSTOM_DOMAIN = AWS_STORAGE_BUCKET_NAME + '.s3.amazonaws.com'
AWS_DEFAULT_ACL = None
#static media settings
STATIC_URL = 'https://' + AWS_STORAGE_BUCKET_NAME + '.s3.amazonaws.com/'
MEDIA_URL = STATIC_URL + 'media/'
STATICFILES_DIRS = ( os.path.join(BASE_DIR, 'static'), )
STATIC_ROOT = 'staticfiles'
ADMIN_MEDIA_PREFIX = STATIC_URL + 'admin/'
STATICFILES_FINDERS = (
'django.contrib.staticfiles.finders.FileSystemFinder',
'django.contrib.staticfiles.finders.AppDirectoriesFinder',
)
STATIC_URL = '/static/'
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')

任何帮助将不胜感激。

尝试调查您出现错误的原因,请通过manage.py check --deploy.我强烈建议您浏览[此处]的文档。(https://docs.djangoproject.com/en/3.0/howto/deployment/checklist/(

您能否显示ALLOWED_HOSTS设置或已将此设置添加到 setting.py

最新更新