我正在尝试确保我的网站受到适当的保护,不会显示生产中错误的详细信息。
我已经为此苦苦挣扎了一段时间,因为一开始我明白为了避免 Django 显示错误(模块、代码行等(,所需要的只是将DEBUG
从 True
更改为 False
settings.py
。
但是,我意识到 Django 仍在显示错误细节,因此进行了更多调查,我开始知道还需要以下内容:
-
TEMPLATE_DEBUG = DEBUG
settings.py
- 在模板文件夹中
404.html
和500.html
是否需要其他任何内容来确保用户不会收到这些消息?
Django 如何处理其他类型的错误,比如400
?我在这里看到有用于400
和403
的处理程序,但我不明白,也不知道基本用例是否需要它们。
DEBUG
False
,Django 不会向用户显示错误详细信息。如果是这样,最可能的解释是它没有使用你认为它正在使用的settings.py
文件(在这种情况下,你应该检查 Python 路径、运行manage.py
的目录以及 DJANGO_SETTINGS_MODULE
的值(,或者你在对 settings.py
进行更改后没有重新启动 Gunicorn/uWSGI/Apache(Django 不会像它那样在生产中自动重新启动自己。开发中(。
至于 400 和 403,只需保留 Django 默认值即可。如果 Django 收到一个错误的请求(在生产中不太可能,因为这通常会被 Apache 或 nginx 捕获(,它将调用 bad_request()
只会向用户显示"400 个错误请求"。其他错误也是如此。