Django表单验证失败后应该返回什么?

1 投票
1 回答
841 浏览
提问于 2025-04-16 18:38

我该如何在Django表单验证失败后返回到我的页面呢?

现在我做的是,在表单验证失败后,我使用render_to_response返回我的表单对象和其他需要传回去的对象。但是浏览器中的网址显示的是表单的操作地址,这让我觉得好像做错了什么。我希望能以某种方式在返回对象的同时使用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))

1 个回答

0

使用会话(Sessions)来处理这个问题会比较好,或者如果你使用AJAX技术,可以在提交表单时进行验证,然后在出现错误时返回你的对象、错误信息或者你想要的任何内容。选择其中一种方法可能会更好。你也可以把POST请求中的参数作为GET查询参数传递到重定向的视图中,或者把参数传递给重定向的视图:

from django.shortcuts import redirect
return redirect('some-view-name', reviewID=id)

撰写回答