【问题标题】:How to use CSRF token in jinja2?如何在 jinja2 中使用 CSRF 令牌?
【发布时间】:2013-12-03 00:24:01
【问题描述】:

我的表单.html:

<form action="/contact/" method="post"><input type="hidden" name="csrfmiddlewaretoken" value="{{ csrf_token }}">
    <table>
    <tr><p><td>Subject: </td><td><input type="text" name="subject" value="{{ subject }}"></p></td></tr>
    <tr><p><td>Your e-mail (optional): </td><td><input type="text" name="email" value="{{ email }}"></p></td></tr>
    <tr><p><td>Message: </td><td><textarea name="message" rows="10" cols="50">**{{ message }}**</textarea></p></td></tr>
    </table>
    <input type="submit" value="Send">
</form>

但我仍然被禁止 (403) CSRF 验证失败。请求中止。

如何纠正?

【问题讨论】:

    标签: python django django-templates jinja2


    【解决方案1】:

    您还需要将django.core.context_processors.csrf 添加到您的TEMPLATE_CONTEXT_PROCESSORS 设置中。否则{{ csrf_token }} 将没有值。

    您现在提交的表单可能带有一个空的 CSRF 令牌。

    【讨论】:

    • 我已经将 django.core.context_processors.csrf 添加到我的 TEMPLATE_CONTEXT_PROCESSORS 中。但我仍然收到此错误...
    【解决方案2】:

    我可能错了,但我相信 {{ csrf_token }} 出现在您的表单标签内部。

    <form>{{ csrf_token }}
    blah: <input type="text">
    <input type="submit">
    </form>
    

    【讨论】:

      猜你喜欢
      • 2018-01-30
      • 2012-05-29
      • 2020-08-15
      • 1970-01-01
      • 2017-11-16
      • 1970-01-01
      • 2012-07-12
      • 2018-02-02
      • 2018-07-17
      相关资源
      最近更新 更多