如果使用 Context({dict}) 与仅使用 {dict},则不会呈现 CSRF 令牌
CSRF token not rendered if using Context({dict}) vs just {dict}
有谁知道为什么以下内容使我的模板正常:
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()
。
取决于你的 Django 版本,但是 render 方法使用了两个上下文相关的参数,context
和 context_instance
,后者需要一个 Context
或 RequestContext
对象,第一个字典。该文档有一些具体的弃用细节:
https://docs.djangoproject.com/en/1.8/topics/http/shortcuts/#optional-arguments
有谁知道为什么以下内容使我的模板正常:
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()
。
取决于你的 Django 版本,但是 render 方法使用了两个上下文相关的参数,context
和 context_instance
,后者需要一个 Context
或 RequestContext
对象,第一个字典。该文档有一些具体的弃用细节:
https://docs.djangoproject.com/en/1.8/topics/http/shortcuts/#optional-arguments