Multiple forms processing in one View.
frombukdjango_multiform.viewsimportMultiFormTemplateViewfromdjango.httpimportHttpResponse, HttpResponseForbiddenfrom .formsimportForm1, Form2deflogged_in(request, *args, **kwargs):
ifnotrequest.user.is_authenticated:
returnHttpResponseForbidden(b'loginplease')
classMyMultiFormTemplateView(MultiFormTemplateView):
template_name='index.html'multiform_field_name='html_field_name'multiforms= {
# template context name for `Form`'form1_ctx': {
'class': Form1,
# pass view attr as keyword argument to form'attrs': ('request',),
# pass view kwargs as keyword argument to form'kwargs': ('some_kwarg',),
},
'form2_ctx': {
'class': Form2,
# check if form can be processed'checks': (logged_in,),
# save form if valid'save': True,
}
}
# pass additional kwargs to `Form1`defget_kwargs_form1_ctx(self, **kwargs):
kwargs.update({
'request': None,
'some_kwarg': None,
})
returnkwargsdefhandle_valid_form2_ctx(self, form):
returnHttpResponse(b'VALID!form2_ctx')
defhandle_invalid_form2_ctx(self, form):
returnHttpResponse(b'INVALID!form2_ctx')
defhandle_valid_form1_ctx(self, form):
returnHttpResponse(b'VALID!form1_ctx')
defhandle_invalid_form1_ctx(self, form):
returnHttpResponse(b'INVALID!form1_ctx')
classMyMultiFormTemplateView2(MyMultiFormTemplateView):
template_name='index.html'# when subclassing all forms are collected# similiar to how `django.forms.Form` fields workmultiforms= {
'form4_ctx': {
'class': Form2,
},
# delete form` from context'form2_ctx': None,
}