【问题标题】:Website returns 500 error when Debug is switched to False in Django Heroku application在 Django Heroku 应用程序中将 Debug 切换为 False 时网站返回 500 错误
【发布时间】:2020-04-19 15:48:39
【问题描述】:

我有一个托管在 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')

任何帮助将不胜感激。

【问题讨论】:

  • 如果你在 ``` urlpatterns +=static(settings.STATIC_URL, document_root=settings.STATIC_ROOT) 中删除“if settings.DEBUG:” urlpatterns +=static(settings.MEDIA_URL, document_root=settings. MEDIA_ROOT) ```问题还出现吗?
  • 我试过了。不会改变任何东西。

标签: django heroku amazon-s3


【解决方案1】:

您能否显示您的 ALLOWED_HOSTS 设置,或者您是否在 setting.py 中添加了此设置

【讨论】:

  • ALLOWED_HOSTS = ['*']
【解决方案2】:

尝试调查您收到错误的原因,请通过manage.py check --deploy 执行此操作。我强烈建议您阅读文档 [此处]。(https://docs.djangoproject.com/en/3.0/howto/deployment/checklist/)

【讨论】:

    猜你喜欢
    • 2015-10-01
    • 2017-10-20
    • 2019-02-18
    • 2018-11-24
    • 2019-10-02
    • 2022-07-28
    • 2021-10-19
    • 2021-08-13
    • 2018-09-26
    相关资源
    最近更新 更多