Многошаговая форма Django
У меня есть многошаговая форма, которая состоит из 3 шагов, но имеет 4 формы. В первой форме пользователь должен выбрать один из двух вариантов. Выбор пользователем первой формы определяет следующую форму, которая будет отображаться. Шаблон первой формы
{% extends 'base.html' %}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title></title>
{% block head %}
{% endblock %}
</head>
<body>
{% block content %}
{% if form.customer_choices == 'commercial': %}
<form action="{% url 'datacollector:step2aformview' %}" method="post">
{% csrf_token %}
{{ form }}
<input type="submit" value="Submit">
</form>
{% else %}
<form action="{% url 'datacollector:step2bformview' %}" method="post">
{% csrf_token %}
{{ form }}
<input type="submit" value="Submit">
</form>
{% endif %}
{% endblock %}
</body>
</html>
form.py
from .models import CustomerInfo, CustomerDocument
from django.forms import ModelForm
from django import forms
CUSTOMER_CHOICES = [
('commercial', 'Commercial'),
('private', 'Private'),
]
class CustomerTypeForm(forms.Form):
customer_chioces = forms.CharField(label="Customertype", widget=forms.RadioSelect(choices=CUSTOMER_CHOICES))
#Commercial customer information
class CustomerInfoForm1(ModelForm):
class Meta:
model = CustomerInfo
fields = "__all__"
#Private customer information
class CustomerInfoForm2(ModelForm):
class Meta:
model = CustomerInfo
fields = ['name1', 'name2', 'name3', 'street', 'house', 'zip1', 'city']
class CustomerDocumentForm(forms.ModelForm):
class Meta:
model = CustomerDocument
fields = ['document']
Виды
from django.shortcuts import render
from datacollector.forms import CustomerTypeForm, CustomerInfoForm1, CustomerInfoForm2, CustomerDocumentForm
from django.urls import reverse
from django.http import HttpResponse, HttpResponseRedirect
# Create your views here.
def step1formview(request):
initial = {'customer_chioces': request.session.get('customer_chioces', None), }
form = CustomerTypeForm(request.POST or None, initial=initial)
if request.method == 'POST':
if form.is_valid():
request.session['customer_choices'] = form.cleaned_data['customer_choices']
if form.customer_choices == 'commercial':
return HttpResponseRedirect(reverse('datacollector:step2aformview'))
else:
return HttpResponseRedirect(reverse('datacollector:step2bformview'))
return render(request, 'forms/CustomerTypeForm.html', {'form': form})
Ошибка: django.template.exceptions.TemplateSyntaxError: Could not parse the remainder: ':' from ''commercial':'
Пожалуйста, как я могу найти способ обойти это? Проверьте мои представления и шаблон
Ну, на самом деле у вас здесь опечатка:
{% if form.customer_choices == 'commercial': %}
лишняя точка с запятой :
Попробуйте удалить его