一般的な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
オブジェクトにアクセスする方法はありますか、それともこれを行うためのより良い(そしてより簡単な)方法はありますか?TIAダン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
。