模板中有{%csrf_token%}标记但没有csrfmiddlewaretoken隐藏值

时间:2015-09-01 02:52:10

标签: python django django-models

我在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;。

  1. 没有&#34; csrfmiddlewaretoken&#34;这就是为什么我有&#34; CSRF 验证失败。请求中止&#34;错误?

  2. 任何人都可以就我的模板有什么问题提供帮助吗?

1 个答案:

答案 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))