1

djangoフォームが検証に失敗した後、どうすれば自分のページに戻ることができますか?

これは私が現時点で持っているものです。フォーム オブジェクトと、戻す必要がある他のすべてのオブジェクトで失敗した後、render_to_response を返します。しかし、ブラウザーの URL にはフォーム アクションの値が含まれているため、これはまるで私が何か悪いことをしているように。どうにかして HttpResponseRedirect と共にオブジェクトを返すことができればいいのですが、ドキュメントを見ることはできません。

def addReview(request,reviewId):
    review = AdminReview.objects.get(id=int(reviewId))

if request.method == 'POST':
    form = UserReviewForm(request.POST)
    if form.is_valid():
        cd = form.cleaned_data
        ur = UserReview(adminReview=review,review=cd['review'],rating=int(cd['rating']))
        ur.save()          
        return HttpResponseRedirect(reverse('filmflux.reviews.views.review', kwargs={'reviewId':review.id,'filmSlug':review.filmSlug}))
userReviews = review.userreview_set.all()
return render_to_response('review.html', {'review':review,'form': form, 'userReviews': userReviews }, context_instance=RequestContext(request))
4

1 に答える 1

0

セッションはこれに適しています。または、AJAX を使用する場合は、フォームを検証してから、オブジェクトまたは何らかのエラー メッセージなど、失敗した後に必要なものを返すことができます。どちらかがおそらく最善でしょう。POST リクエストからパラメータを GET クエリ パラメータとしてリダイレクトされたビューに渡すか、リダイレクトされたビューに引数を渡すこともできます。

from django.shortcuts import redirect
return redirect('some-view-name', reviewID=id)
于 2011-05-30T19:49:17.117 に答える