4

我遇到了这个问题,但不幸的是仍然不知道如何解决它。表单完美呈现,我输入信息并收到 CSRF 错误。给出的理由是token missing or incorrect

看法:

def eventSell(request, id):
    c = {}
    c.update(csrf(request))
    event = SquidEvent.objects.get(pk = id)
    listing_form = ListingForm(request.POST)
    if request.user.is_authenticated():
        if request.method == 'POST':
            listing_form = ListingForm(request.POST)
            if listing_form.is_valid():
                cd = listing_form.cleaned_data
                user = request.user
                item = Object(price = cd['price'], seller = user)
                item.save()
                return HttpResponseRedirect(reverse('tixeng:index'), c)
            #print listing_form
        else:
            return render_to_response('tixeng/list.html', {'event' : event, 'form' : listing_form}, c)
    else:
        return HttpResponseRedirect(reverse('allauth.account.views.login'))

这是我的模板:

<form action="{% url 'app:eventSell' event.id %}" method="post">
{% csrf_token %}
{{ form }}
<input type="submit" value="Submit">
</form>

我想我做的一切都是对的,我不确定是什么导致了 CSRF 错误。此外,如果它是相关的,我将以此作为指导:

http://www.djangobook.com/en/2.0/chapter07.html

4

2 回答 2

3

这个堆栈在这里Django “视图没有返回 HttpResponse 对象。” 能够帮助我解决问题。一旦我添加context_instance = RequestContext(request)到我的render_to_response它就可以了。

于 2013-08-14T16:10:17.020 回答
0

context_instance自 1.8 版起已弃用。您可以使用:

return render(request, 'admin/match_main.html', RequestContext(request, locals()))  
于 2015-09-19T16:13:51.607 回答