私はDjango1.5のGenericViewsを使おうとしていますが、そのような混乱を招きます。これまで、views.py内の関数を使用してきました。関数アプローチにはより多くの定型コードがあることに同意しますが、同時に、開発者としてそれをより細かく制御できます。それにもかかわらず、学習のために。この部分的なコードを考えてみましょう:
if request.method == 'POST':
if 'invitation' in request.session:
invitation = Invitation.objects.get(id=request.session['invitation'])
profile = invitation.sender.get_profile()
form = RegistrationForm(request.POST, is_accept_invite = True, _email = invitation.email)
else:
form = RegistrationForm(request.POST)
if form.is_valid():
...
私の理解では、一般的なビューでは、GET、POST-> Valid、POST-> invalid()の3つの状態が考慮されます。
ただし、上記のコードはPOST-> form.validationの前の条件であり、それに応じてフォームをインスタンス化します。
これは私が思いついた一般的な見方です:
class RegisterView(FormView):
template_name = 'register.html'
form_class = RegisterForm
success_url = '/registration_successfull/'
def form_valid(self, form):
...
def form_invalid(self, form):
...
request.sessionをオーバーライドget_form(form_class)
または確認し、それに応じてRegistrationFormをインスタンス化する必要があると思います。get_form_kwargs()
あれは正しいですか?それを行う方法の例はありますか?ドキュメントに例が見つかりませんでした。