Есть ли способ принудительно подавить HttpResponse из метода FormView, основанного на классе (например, get_initial)?

Есть ли способ принудительно вызвать HttpResponse из метода представления на основе класса?

Например, если есть исключение, когда в get_initial или любом другом методе представления мы можем заставить представление остановить процесс рендеринга формы, отправьте HttpResponse?

1 ответ

Метод dispatch вида - это то, что возвращает HttpResponse. Вы всегда можете вызвать исключение, которое не будет обрабатываться в другом месте и поймать его там. Он должен просто пузыриться, пока не доберется туда.

Ex.

#place where you want to raise exception
if condition.is_not_met:
 raise WoahException

#views.py
class MyFormView(views.FormView):
 def dispatch(self, request, *args, **kwargs):
 try:
 return super(MyFormView, self).dispatch(request, *args, **kwargs)
 except WoahException:
 return HttpResponse("Woah, there was an exception")

licensed under cc by-sa 3.0 with attribution.