Django项目报错:'SafeExceptionReporterFilter'无get_safe_settings属性
问题
首次使用Django搭配React和Django Toolbar开发Web应用,该项目一周前还能正常运行,现在启动时出现如下错误:
Exception ignored in thread started by: <function check_errors.<locals>.wrapper at 0x0000018E6BC28310> Traceback (most recent call last): File "C:\Users\nagyd.virtualenvs\pythonProject\lib\site-packages\django\utils\autoreload.py", line 225, in wrapper fn(*args, **kwargs) File "C:\Users\nagyd.virtualenvs\pythonProject\lib\site-packages\django\core\management\commands\runserver.py", line 117, in inner_run self.check(display_num_errors=True) File "C:\Users\nagyd.virtualenvs\pythonProject\lib\site-packages\django\core\management\base.py", line 376, in check all_issues = self._run_checks( File "C:\Users\nagyd.virtualenvs\pythonProject\lib\site-packages\django\core\management\base.py", line 366, in _run_checks return checks.run_checks(**kwargs) File "C:\Users\nagyd.virtualenvs\pythonProject\lib\site-packages\django\core\checks\registry.py", line 71, in run_checks new_errors = check(app_configs=app_configs) File "C:\Users\nagyd.virtualenvs\pythonProject\lib\site-packages\django\core\checks\urls.py", line 13, in check_url_config return check_resolver(resolver) File "C:\Users\nagyd.virtualenvs\pythonProject\lib\site-packages\django\core\checks\urls.py", line 23, in check_resolver return check_method() File "C:\Users\nagyd.virtualenvs\pythonProject\lib\site-packages\django\urls\resolvers.py", line 396, in check for pattern in self.url_patterns: File "C:\Users\nagyd.virtualenvs\pythonProject\lib\site-packages\django\utils\functional.py", line 37, in __get__ res = instance.__dict__[self.name] = self.func(instance) File "C:\Users\nagyd.virtualenvs\pythonProject\lib\site-packages\django\urls\resolvers.py", line 533, in url_patterns patterns = getattr(self.urlconf_module, "urlpatterns", self.urlconf_module) File "C:\Users\nagyd.virtualenvs\pythonProject\lib\site-packages\django\utils\functional.py", line 37, in __get__ res = instance.__dict__[self.name] = self.func(instance) File "C:\Users\nagyd.virtualenvs\pythonProject\lib\site-packages\django\urls\resolvers.py", line 526, in urlconf_module return import_module(self.urlconf_name) File "C:\Users\nagyd\AppData\Local\Programs\Python\Python39\lib\importlib_init_.py", line 127, in import_module return _bootstrap._gcd_import(name[level:], package, level) File "<frozen importlib._bootstrap>", line 1030, in _gcd_import File "<frozen importlib._bootstrap>", line 1007, in _find_and_load File "<frozen importlib._bootstrap>", line 986, in _find_and_load_unlocked File "<frozen importlib._bootstrap>", line 680, in _load_unlocked File "<frozen importlib._bootstrap_external>", line 855, in exec_module File "<frozen importlib._bootstrap>", line 228, in _call_with_frames_removed File "C:\Users\nagyd\PycharmProjects\pythonProject\firstproject\firstproject\urls.py", line 27, in <module> path('__debug__/', include('debug_toolbar.urls')), File "C:\Users\nagyd.virtualenvs\pythonProject\lib\site-packages\django\urls\conf.py", line 34, in include urlconf_module = import_module(urlconf_module) File "C:\Users\nagyd\AppData\Local\Programs\Python\Python39\lib\importlib_init_.py", line 127, in import_module return _bootstrap._gcd_import(name[level:], package, level) File "<frozen importlib._bootstrap>", line 1030, in _gcd_import File "<frozen importlib._bootstrap>", line 1007, in _find_and_load File "<frozen importlib._bootstrap>", line 986, in _find_and_load_unlocked File "<frozen importlib._bootstrap>", line 680, in _load_unlocked File "<frozen importlib._bootstrap_external>", line 855, in exec_module File "<frozen importlib._bootstrap>", line 228, in _call_with_frames_removed File "C:\Users\nagyd.virtualenvs\pythonProject\lib\site-packages\debug_toolbar\panels\settings.py", line 7, in <module> get_safe_settings = get_default_exception_reporter_filter().get_safe_settings AttributeError: 'SafeExceptionReporterFilter' object has no attribute 'get_safe_settings'
解决建议
- 修复版本兼容性:这个错误是Django Debug Toolbar与当前Django版本不匹配导致的——
get_safe_settings方法在新版Django中被移除/重命名,但你安装的Debug Toolbar版本仍在调用它。- 升级Debug Toolbar:执行命令
pip install --upgrade django-debug-toolbar,安装适配当前Django版本的最新版。 - 降级Django:如果不想升级Debug Toolbar,先查看该Toolbar支持的Django版本范围,再执行降级命令,比如
pip install django==3.2.x(替换为对应兼容版本号)。
- 升级Debug Toolbar:执行命令
- 临时禁用Debug Toolbar:若需紧急启动项目,可临时注释掉
urls.py中Debug Toolbar的路由配置,以及settings.py里相关的APP注册和中间件配置,后续处理好版本问题再恢复。 - 核对虚拟环境:确认当前使用的虚拟环境为项目专属环境,避免因环境切换导致依赖版本混乱。
内容的提问来源于stack exchange,提问作者FuzzyBoo
相关产品推荐
相关产品推荐

