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 に答える