Я пытаюсь использовать formwizard в пакете formtools без каких-либо успехов (я смог сделать это, когда пакет находился внутри Django в более ранних версиях).Мастер Django formtools создает пустую страницу (ошибка не возвращается)
Единственный ответ, который я получил это:
[23/Jan/2016 11:06:50]"GET /registration/wizard HTTP/1.1" 200 13729
и пустая страница. Нет ошибок в браузере или консоли Eclipse.
Нет ошибок при поиске без ошибок. Пожалуйста помоги.
Заранее спасибо
Что я сделал?
Во-первых, я установил пакет formtools с пип:
django-formtools==1.0
Django==1.8.3
В соответствии с указаниями официальных документы:
Определить классы форм
регистрация/forms.py
class StepForm1(forms.Form): first_field = forms.CharField(max_length=100) second_field = forms.CharField() class StepForm2(forms.Form): message = forms.CharField(widget=forms.Textarea)
Создать WizardView
регистрация/views.py
TEST_TEMPLATES = {"test_step_1": "registration/test_step1.html", "test_step_2": "registration/test_step2.html", } from formtools.wizard.views import SessionWizardView class WizardTest(SessionWizardView): template_name = 'registration/test_wizard.html' # Return templates for each step def get_templates_name(self): return [TEST_TEMPLATES[self.steps.current]] # Method called when all is done def done(self, form_list, **kwargs): # return HttpResponseRedirect('/url-to-redirect-to/') # We return the final template with the info return render_to_response('test_done.html', { 'form_data':[form.cleaned_data for form in form_list], }) # THESE METHODS BELOW ARE NOT NEEDED, BUT COMMENTED FOR FUTURE USE # Not strictly needed. Returns data for a step # or None if form is not valid # def get_cleaned_data_for_step(self, step): # return None # Form data postprocessing in a concrete wizard step # def process_step(self, form): # return self.get_form_step_data(form) # Handles value from a step before storing them into wizard # def get_form_step_data(self, form): # return form.data
Создание шаблонов
регистрация/test_step1.html
<h1>Two fields form</h1> <input id="first_field" name="first_field"> <input id="second_field" name="second_field">
регистрация/test_step2.html
<h1>Message form</h1> <input id="message" name="message">
регистрация/test_wizard.html
{% extends "person/alumnos.html" %} {% load i18n %} {% block head %} {{ wizard.form.media }} {% endblock head %} {% block content %} <p>{% trans "Step {{wizard.steps.step1}} of {{wizard.steps.count}}" %}</p> <form action="" method="post"> {% csrf_token %} {{ wizard.management_form }} {% if wizard.form.forms %} {{ wizard.form.management_form }} {% for form in wizard.form.forms %} {{form}} {% endfor %} {% else %} {{ wizard.form }} {% endif %} {% if wizard.steps.prev %} <button name="wizard_goto_step" type="submit" value="{{ wizard.steps.first }}">{% trans "Beginning" %}</button> <button name="wizard_goto_step" type="submit" value="{{ wizard.steps.prev }}">{% trans "Previous step" %}</button> {% endif %} <input type="submit" value="submit"/> </form> {% endblock %}
Добавить '' formtools моему INSTALLED_APPS
settings.py
DJANGO_APPS = ( # Default Django apps: 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.sites', 'django.contrib.messages', 'django.contrib.staticfiles', 'formtools', # <===== HERE # Useful template tags: # 'django.contrib.humanize', # Admin panel and documentation: 'django.contrib.admin', # 'django.contrib.admindocs', ) # Apps specific for this project go here. LOCAL_APPS = ( 'person', 'registration', 'teaching', 'utils', ) # See: https://docs.djangoproject.com/en/dev/ref/settings/#installed-apps INSTALLED_APPS = DJANGO_APPS + LOCAL_APPS
- Направьте свой URL-адрес в свой метод WizardView as_view().
регистрация/urls.py
from registration.forms import StepForm1, StepForm2
TEST_FORMS = [("test_step_1", StepForm1), ("test_step_2", StepForm2), ]
from registration.views import WizardTest
# I tried in two ways, none of them worked
urlpatterns = patterns('',
url(r'^wizard$', WizardTest.as_view(TEST_FORMS), name='wizard_test'),
url(r'^wizard2$', views.wizard, name='wizard_test'),
)
Для второго пути ...
регистрация/views.py
def wizard(request):
return WizardTest.as_view(TEST_FORMS)(request)
Я отредактировал сообщение, чтобы показать шаблон мастера. Он еще не работает – madtyn
Мой последний комментарий был отредактирован, потому что его, возможно, неправильно поняли. Я в той же ситуации, и основной шаблон для формы всегда был одним и тем же (я только забыл поместить его в этот пост stackoverflow при его создании) – madtyn