我尝试浏览的每一页都出现500个错误。我唯一要更改的是将DEBUG更改为False。
这是我的配置:
SECRET_KEY = os.environ.get("SECRET_KEY", "0$ke!x1bz5cj0mpzo1zfx4omw-c9iqw%m95zb)(2@ddg5s+3!f")
ALLOWED_HOSTS = ['*']
# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = False
# Application definition
INSTALLED_APPS = [
'posts', # Contains all dynamic and static pages related to posts
'courses', # Contains all dynamic and static pages related to courses and modules
'pages', # Contains all static pages that are not post related
'markdownx', # Allows for editing and creating markdown content
'jet.dashboard',
'jet', # Django admin theme override
'pwa', # Sets app to be PWA compliant
'whitenoise.runserver_nostatic', # Serving static files
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
]
从字面上看,我所看到的每个答案都说只要将ALLOWED_HOSTS设置为['*'],就可以看到我已经做到了,但仍然没有骰子。我检查了文档,然后发现它们在其他调试模式效果上都很稀疏,其中有一部分文档说:
作为一项安全措施,Django将不包括可能敏感的设置,例如SECRET_KEY。具体来说,它将排除名称包括以下任何内容的任何设置: “ API” '键' '通过' '秘密' '签名' “令牌”
https://docs.djangoproject.com/en/2.2/ref/settings/#debug
我唯一能想到的是secret_key没有被拿走,但是如果是这样,您如何在生产中做到这一点?
编辑:有些人一直在要求我将调试模式设置为true以获得追溯。问题是,当我将其设置为true时,我没有得到500错误,只有DEBUG = False时。
答案 0 :(得分:1)
因此,问题与未加载单个图标有关,该路径已关闭,但是由于当DEBUG = True我没有抓到静态文件且当DEBUG =时Django处理静态文件的方式(实际上是愚蠢的)错误,没有没有追溯。
我学到的一个巧妙技巧是,您可以通过在主设置中附加一个明确的记录器来强制Django为您提供所需的记录信息,如下所示:
import logging
LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'handlers': {
'console': {
'class': 'logging.StreamHandler',
},
},
'loggers': {
'django': {
'handlers': ['console'],
'level': os.getenv('DJANGO_LOG_LEVEL', 'DEBUG'),
},
},
}
因此,我在6个小时的调试中了解到的三件事是您遇到的情况:
STATIC_URL = '/static/'
STATICFILES_DIRS = [
os.path.join(BASE_DIR, 'static'),
]
STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')
STATICFILES_STORAGE = '.storage.WhiteNoiseStaticFilesStorage' # Read point 3 for details about this
from whitenoise.storage import CompressedManifestStaticFilesStorage
class WhiteNoiseStaticFilesStorage(CompressedManifestStaticFilesStorage):
manifest_strict = False
答案 1 :(得分:0)
添加一个答案,因为这只花了我几个小时的调试时间,这也许可以使其他人摆脱同一问题。
我在某些管理页面上只得到SERVER ERROR 500
。有些模型可以正常工作,有些则不能。我当时怀疑是第三方模块。
出现此问题的原因是我正在使用django-nested-inline
,并且通过pip
安装的版本中存在一个错误,该错误无法找到修改管理页面所必需的jQuery副本。处理嵌套的内联。
此错误已修复,因此我需要删除正在使用的版本,然后直接从Github安装该修复的版本。
答案 2 :(得分:0)
我解决了我的问题
输入DEBUG = True
运行 $ python manage.py收集静态
如果有任何错误,则您的静态文件中的任何错误都会出现在终端中。在继续之前,请尝试解决该错误。
进入您的主项目/settings.py 而不是通过使用“ *”作为允许的主机。 将其替换为您的本地主机链接 例如:127.0。 0.1。
进入浏览器的历史记录,并删除最近的cookie和缓存。
刷新您的项目,仅此而已。