Что вернуть после того, как форма django не прошла проверку?

Как мне вернуться на свою страницу после того, как форма 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))

person oracal    schedule 30.05.2011    source источник


Ответы (1)


Для этого подойдут сеансы, или, если вы используете AJAX, вы можете проверить форму, а затем вернуть свой объект или какое-то сообщение об ошибке или что-то еще, что вы хотите после сбоя. То или другое, вероятно, было бы лучше. Вы также можете передать параметры из запроса POST вместе с параметрами запроса GET в перенаправленное представление или передать аргументы в перенаправленное представление:

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