【问题标题】:CSRF verification failed. Request aborted. Django 2.0CSRF 验证失败。请求中止。姜戈 2.0
【发布时间】:2018-07-16 19:56:23
【问题描述】:
def order_view(request):
    if request.method == 'POST':
        form = OrderForm(request.POST)
        if form.is_valid():
            return HttpResponseRedirect('Order Submitted')
    else:
        form = OrderForm()

    return render_to_response('home/order.html', {'form': form})

views.py 中的 order_view 函数

<form class="form form-table" method="post">
{% csrf_token %}
{{ form|crispy   }}
<input class="btn br-green" type="submit" value="Submit"/>
</form>

其中仍然存在 CSRF 错误。已经尝试了大部分解决方案,但它们都不起作用。也尝试添加 RequestContext(request)。

【问题讨论】:

    标签: python django csrf


    【解决方案1】:

    HttpResponseRedirect 接受一个网址。我不认为“已提交订单”是。

    试试

    def order_view(request):
        if request.method == 'POST':
            form = OrderForm(request.POST)
            if form.is_valid():
                form.save()
        else:
            form = OrderForm()
        return render_to_response('home/order.html', {'form': form})
    

    如果这可行,那么您将被排序并使用 django.messages 向您的用户提供消息。

    【讨论】:

    • 用户警告:模板中使用了 {% csrf_token %},但上下文未提供该值。这通常是由于没有使用 RequestContext 造成的。 "模板中使用了 {% csrf_token %},但上下文 "
    • 尝试用render( request, 'home/order.html', {'form': form})替换render_to_response('home/order.html', {'form': form})
    • 如果已解决您的问题,请标记为已回答,以便它不会显示在未回答的问题中
    猜你喜欢
    • 2015-03-19
    • 2017-08-06
    • 1970-01-01
    • 2012-05-16
    • 2012-05-10
    • 2017-06-17
    • 2012-12-07
    • 2015-03-08
    相关资源
    最近更新 更多