Используя общий FormView, я хотел бы отразить кое-что о данных POST, которые были отправлены обратно пользователю, но я не уверен, как лучше это сделать.
class MyView(generic.FormView):
form_class = MyForm
def get_success_url(self):
return reverse('success')
reverse('success')
перенаправляет на простой
class SuccessView(generic.TemplateView):
template_name = 'success.html'
Есть ли способ, которым я могу получить доступ к params
объекту в SuccessView
через вызов get_success_url
, или есть лучший (и более простой) способ сделать это? ТИА Дан
ОБНОВЛЕНИЕ (мое решение, но спасибо за идеи)
Я действительно обнаружил, что это был самый простой способ (для меня) решить проблему:
class SuccessMixin(object):
def post(self, request, *args, **kwargs):
form_class = self.get_form_class()
form = self.get_form(form_class)
if form.is_valid():
return self.form_valid(form)
else:
return self.form_invalid(form, **kwargs)
def form_valid(self, form):
# this is my post processing step which returns the
# feedback data that I want to pass to the user
form_data = form.get_some_data_from_form()
return render_to_response('submitted.html',
{'form_data': form_data,},
context_instance=RequestContext(self.request))
Каждое представление наследует этот миксин, и если форма действительна, я извлекаю из нее данные обратной связи и отображаю их как ответ - полностью обходя перенаправление get_success_url. Я удалил get_success_url
и SuccessView
.