我将我的django项目从1.8.4升级到1.9.7,现在我收到以下警告
RemovedInDjango110Warning:必须使用dict调用render(),而不是Context。 返回HttpResponse(t.render(c))
我的观点通常看起来像这样
def my_view(request):
.
.
.
context_data = "context data to render"
t = loader.get_template('maps/my_template.html')
c = Context(context_data)
return HttpResponse(t.render(c))
有关如何解决此问题的任何建议吗?
更新
根据批准的答案,我的代码将变为以下内容:
from django.shortcuts import render
def my_view(request):
.
.
.
context_data = "context data to render"
return render(request, 'maps/my_template.html', dict(context_data))
答案 0 :(得分:4)
django.shortcuts.render
函数暂时已经是一种实用工具方法,包括请求并将字典中的上下文数据传递给您,因此您可以更改大部分代码以反映新方法
context_data = "context data to render"
t = loader.get_template('maps/my_template.html')
c = Context(context_data)
return HttpResponse(t.render(c))
会变成
render(request, 'maps/my_template.html', {'item1': value })
然而,实际错误表明render
现在只需要一个字典,而不是一个上下文对象。所以它会是t.render({'item1': value})
答案 1 :(得分:0)
尝试将context_data = "context data to render"
更改为context_data["context_data"] = "context data to render"
。
目标是将context_data
更改为词典。