Django警告 - RemovedInDjango110Warning:必须用dict调用render(),而不是上下文

时间:2016-06-19 19:59:41

标签: django django-views

我将我的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))

2 个答案:

答案 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更改为词典。