Вы можете сделать это технически, используя один вид и один шаблон для рендеринга 3 форм, а затем использовать URL-адрес действия, ссылающийся на 3 отдельных вида, например:
def 3_forms_view(request):
form_a = YourFormA(request.POST or None)
form_b = YourFormB(request.POST or None)
form_c = YourFormC(request.POST or None)
context = {
"form_a": form_a,
"form_b": form_b,
"form_c": form_c,
}
return render(request, '3_form_template.html', context)
def view_a(request):
form_a = YourFormA(request.POST)
if form_a.is_valid():
#do something
form_a.save()
return HttpResponseRedirect('your_succsess_url')
# in case the form is not valid call back the view
# which handle the 3 form display
return 3_forms_view(request)
def view_b(request):
form_b = YourFormB(request.POST)
if form_b.is_valid():
#do something
form_b.save()
return HttpResponseRedirect('your_succsess_url')
# in case the form is not valid call back the view
# which handle the 3 form display
return 3_forms_view(request)
#same thing for view c
3_form_template :
<form action="{% url 'view_a_url_name' %}" method="post">
{% csrf_token %}
{{ form_a.as_p }}
<button type="submit">Submit A</button>
</form>
<form action="{% url 'view_b_url_name' %}" method="post">
{% csrf_token %}
{{ form_b.as_p }}
<button type="submit">Submit B</button>
</form>
<form action="{% url 'view_c_url_name' %}" method="post">
{% csrf_token %}
{{ form_c.as_p }}
<button type="submit">Submit C</button>
</form>