我在Django中使用django.contrib.comments,版本是1.6.1 那我有一个这样的表格,
{% get_comment_form for mbean as form %}
<table>
<form action="{% comment_form_target %}" method="post" class="aaa">{% csrf_token %}
{{ form }}
<tr>
<td colspan="2">
<input type="submit" name="submit" value="Post">
<input type="submit" name="preview" value="Preview">
</td>
</tr>
</form>
</table>
但是当我用HTML检查我的网页来源时,我在源代码中找不到<input type='hidden' name='csrfmiddlewaretoken' value='uiwp7YkGi374HwnZqMRbCUmzyH38jDPI' />
,并且&#34; CSRF验证失败。请求中止&#34;错误。
我还在此模板的其他形式中使用了{%csrf_token%},但仍然没有&#34; csrfmiddlewaretoken&#34;。
没有&#34; csrfmiddlewaretoken&#34;这就是为什么我有&#34; CSRF 验证失败。请求中止&#34;错误?
任何人都可以就我的模板有什么问题提供帮助吗?
答案 0 :(得分:1)
要在模板中使用{%csrf_token%},您需要在呈现它时将RequestContext实例传递给模板,然后在此处进行操作。然后,您可以使用csrf_token,它也将在源中可见。
示例代码段,用于在呈现模板时发送上下文实例:
from django.template import RequestContext
def home(request):
return render_to_response('index.html', context_instance=RequestContext(request))