Django:避免在生产中显示错误细节



我正在尝试确保我的网站受到适当的保护,不会显示生产中错误的详细信息。

我已经为此苦苦挣扎了一段时间,因为一开始我明白为了避免 Django 显示错误(模块、代码行等(,所需要的只是将DEBUGTrue 更改为 False settings.py

但是,我意识到 Django 仍在显示错误细节,因此进行了更多调查,我开始知道还需要以下内容:

  • TEMPLATE_DEBUG = DEBUG settings.py
  • 在模板文件夹中404.html500.html

是否需要其他任何内容来确保用户不会收到这些消息?

Django 如何处理其他类型的错误,比如400?我在这里看到有用于400403的处理程序,但我不明白,也不知道基本用例是否需要它们。

如果

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 个错误请求"。其他错误也是如此。

相关内容

最新更新