运行Django的python manage.py runserver时出现TypeError: 'dict'对象不可调用
解决Django中'dict' object is not callable TypeError错误
环境信息
- 请求方法:GET
- 请求URL:
http://127.0.0.1:8000/league/ - Django版本:4.1.2
- Python版本:3.10.0
报错详情
Traceback (most recent call last): File "/Users/km/Projects/tournament/Worldchamps/champ_env/lib/python3.10/site-packages/django/core/handlers/exception.py", line 55, in inner response = get_response(request) Exception Type: TypeError at /league/ Exception Value: 'dict' object is not callable
排查与解决方法
- 检查视图函数返回值:Django视图必须返回可调用的响应对象(比如
HttpResponse、JsonResponse、TemplateResponse),如果直接返回字典(比如return {'name': 'league'})就会触发这个错误。把返回字典的代码改成return JsonResponse({'name': 'league'}),或者渲染模板返回对应的响应对象。 - 核对URL配置:打开项目的
urls.py,确认/league/对应的路由是否正确指向了视图函数。别把字典当成视图配置,比如错误写法path('league/', {'key': 'val'}, name='league'),要改成path('league/', views.league_view, name='league')这种指向视图函数的写法。 - 检查装饰器与中间件:如果视图用了自定义装饰器,或者项目加了第三方中间件,排查是否有代码错误把响应对象改成了字典。比如装饰器返回值错误,导致最终返回的是字典而非响应对象。
- 类视图实现检查:如果用的是类视图,确认已经正确继承了Django的基类(比如
View、ListView),并且get方法返回的是响应对象,而不是直接return字典。
内容的提问来源于stack exchange,提问作者Koome Mwiti
相关产品推荐
相关产品推荐

