Django报错TypeError:context需为dict而非RequestContext求助
Django 4.1.1 TypeError问题排查方案
问题根源:Django 1.10及以上版本中,
render()函数要求传入的context必须是字典类型,不再支持直接传入RequestContext对象,你的代码中应该是手动构造了RequestContext并传给了render(),导致触发该错误。修复方法:
- 找到视图中返回
RequestContext的代码段,比如这类写法:from django.template import RequestContext return render(request, 'polls/index.html', RequestContext(request, {'key': 'value'})) - 直接传入字典即可,
render()会自动处理请求上下文,无需手动构造RequestContext:return render(request, 'polls/index.html', {'key': 'value'}) - 如果需要添加如CSRF令牌这类上下文处理器的内容,可通过字典合并实现:
from django.template.context_processors import csrf context = {'key': 'value'} context.update(csrf(request)) return render(request, 'polls/index.html', context)
- 找到视图中返回
补充说明:Django高版本(包括4.1.1)的
render()函数内部已自动集成RequestContext的创建与上下文处理器的应用,手动传入RequestContext属于冗余且不符合当前版本规范的写法。
内容的提问来源于stack exchange,提问作者Onyango Don Omondi
相关产品推荐
相关产品推荐

