如果使用Context({dict})vs only {dict},则不会呈现CSRF令牌

时间:2015-08-14 05:56:02

标签: django csrf django-context

有谁知道以下为什么我的模板可以正常呈现:

c= {'render_form' : form }
return render(request, 'page1.html', c)

但以下内容未呈现csrf令牌:

c= Context({'render_form' : form}) 
return render(request, 'page1.html', c)

模板如下所示:

<form method="post">
    {% csrf_token %}
    {{ render_form }}
     <input type="submit" value="Submit" class='btn' id="submitbutton" name="_submit" />
</form>

我想保留render(),我希望避免使用locals()

1 个答案:

答案 0 :(得分:1)

取决于您的Django版本,但render方法用于获取两个与上下文相关的参数contextcontext_instance,后者需要ContextRequestContext个对象,第一本字典。该文档有一些特定的弃用细节:

https://docs.djangoproject.com/en/1.8/topics/http/shortcuts/#optional-arguments