【问题标题】:How to fix a CSRF verification error?如何修复 CSRF 验证错误?
【发布时间】:2012-06-10 13:27:10
【问题描述】:

我收到错误消息,“CSRF 令牌丢失或不正确”,但我相信我在模板中包含了正确的标签。以下是一直显示此错误的视图和模板:

def contact(request):
    if request.method == 'POST':
        form = ContactForm(request.POST)
        if form.is_valid():
            cd = form.cleaned_data
            return HttpResponseRedirect('/contact/thanks/')
    else:
        form = ContactForm()
    return render_to_response('reserve/templates/contact_form.html',{'form': form})

模板:

<html>
<head>
    <title>Contact us</title>
</head>
<body>
    <h1>Contact us</h1>

    {% if form.errors %}
        <p style="color: red;">
            Please correct the error{{ form.errors|pluralize }} below.
        </p>
    {% endif %}

    <form action="" method="post">
    {% csrf_token %}
        <table>
            {{ form.as_p }}
        </table>
        <input type="submit" value="Submit">
    </form>
</body>
</html>

【问题讨论】:

标签: python django templates csrf


【解决方案1】:

注意the instructions 的第 3 项。一种快速的方法是将您的 render_to_response 调用替换为 render(request, 'reserve/templates/contact_form.html',{'form': form})(通过 from django.shortcuts import render 导入)。

【讨论】:

    【解决方案2】:

    您应该将上下文实例传递给您的 render_to_response

    from django.template import RequestContext
    
    return render_to_response('reserve/templates/contact_form.html', context_instance=RequestContext(request,{'form': form}))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-08
      • 2019-10-07
      • 1970-01-01
      • 2013-03-30
      • 2019-09-07
      • 1970-01-01
      • 2022-06-11
      • 2018-08-04
      相关资源
      最近更新 更多