
Я хочу, что бы пользователь нажал "ДАЛЕЕ" и отобразился мастер форм. При этом, введенные пользователем данные должны быть доступны в мастере.
Однако по нажатию кнопки "ДАЛЕЕ" появляется ошибка 'Данные ManagementForm отсутствуют или были искажены.'. Хотя {{ wizard.management_form }}
в шаблоне присутствует.
С другой стороны, если зайти на страничку не перейдя посредством кнопки "ДАЛЕЕ", а посетив ее просто зайдя по ссылке /board/search/, то форма отображается.
В чем может быть дело?
Django 1.10.6
django-formtools 2.0
из main.html (главная страница)
.
.
.
<form action="{% url 'board:search-wizard' %}" method="post">{% csrf_token %}
<input id="city" name="city" type="text" size="80" class="main-text-area" lang="ru" maxlength="80"
value="г Москва"
placeholder="например, 'г Москва'"><br>
<button type="submit">ДАЛЕЕ</button>
</form>
.
.
.
Создание мастера:
# views.py
SEARCH_STEP_TEMPLATES = {
"step0": "formtools/wizard/search/step0.html",
}
SEARCH_ADVERT_FORMS = [
('step0', FormSearchStep0),
]
class SearchWizardView(SessionWizardView):
def get_template_names(self):
return [SEARCH_STEP_TEMPLATES[self.steps.current]]
def done(self):
pass
def get_context_data(self, form, **kwargs):
context = super(SearchWizardView, self).get_context_data(
form=form, **kwargs)
city = self.request.POST.get("city", "Не передан")
context.update({'city': city})
return context
forms.py (форма)
class FormSearchStep0(forms.Form):
test_field = forms.IntegerField(
label="Тестовый ввод",
min_value=100,
max_value=10000,
)
Шаблон первого шага мастера форм:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
</head>
<body>
<form action="" method="post" enctype="multipart/form-data">
{% csrf_token %}
{{ city }}<br>
<table>
{{ wizard.management_form }}
{{ wizard.form.as_table }}
</table>
<input type="submit" value="Далее"/>
</form>
</body>
</html>
urls.py (приложения board):
app_name = 'board'
urlpatterns = [
url(r'^search/$',
SearchWizardView.as_view(SEARCH_ADVERT_FORMS),
name="search-wizard",
),
]
urls.py (проекта):
urlpatterns = [
url(r'^$',
MainPageView.as_view(template_name='main.html'),
name='main-page'),
url(r'^board/', include('board.urls')),
]
Updated 19 April 2017, 10:23 by Dzmitry.