4

フォームの送信を処理することになっているビューがあります。テンプレートの HTML フォームは投稿を送信することになっていますが、ビューは GET リクエストしか受信しません。

意見:

def eventSell(request, id):
    event = Event.objects.get(pk = id)
    if request.user.is_authenticated():
        print request.user 
        if request.method == ['POST']:
            print 'post'
            form = ListingForm(request.POST)
            if form.is_valid():
                print 'form is valid'
                user = request.user
                price = request.POST['price']
                t = Object(event = event, price = price, seller = user, date_listed = timezone.now())
                t.save()
                return HttpResponseRedirect(reverse('app:index'))
        else:
            print 'get'
            form = ListingForm()
        return render_to_response('app/list.html', {'form' : form, 'event' : event}, context_instance = RequestContext(request))
    else:
        return HttpResponseRedirect(reverse('allauth.accounts.views.login'))

テンプレート:

<form action="" method="post">
{% csrf_token %}
{{ form }}
<input type="submit" value="Submit">
</form>

私はここで本当に困惑しているので、アドバイスをいただければ幸いです。ありがとう。

4

1 に答える 1

6

送信している可能性POSTがありますが、正しく聞いていません。

if request.method == ['POST']:

する必要があります

if request.method == 'POST':

あるいは単に

if request.POST:

もう一つ。

認証されたユーザーを手動でチェックする代わりに、@login_requiredデコレータを使用できます。

于 2013-08-14T16:18:57.367 に答える