/ / djangoフォームウィザード、2番目のステップには進まない - django、django-forms

djangoフォームウィザードは、第2ステップには行っていない - django、django-forms

Djangoを使って次のことを実行しようとしています。

  • 2つのフォームを含むウィザード
  • 最初の形式は、いくつかのフィールドを自動的に計算するためのいくつかのAjaxを含む単純な形式です。
  • 2番目の形式はユーザー登録です

問題は次のとおりです。

  • 最初のフォームは正しく表示され、ページ内のAjaxは正常に機能しています
  • 「送信」ボタンを押した後に2番目のフォームが表示されることはありません

コードは次のとおりです。

urls.py

from forms import InsertPropertyForm1, InsertPropertyForm2
from views import InsertPropertyWizard

urlpatterns = patterns("",
url(r"^addProperty/$",  InsertPropertyWizard.as_view([InsertPropertyForm1, InsertPropertyForm2]), name="addProperty"),
)

views.py

FORMS = [("property", InsertPropertyForm1),
("test", InsertPropertyForm2)
]
TEMPLATES = {"0": "realEstate/addProperty.html",
"1" : "realEstate/test.html",
}

class InsertPropertyWizard(SessionWizardView):

def get_template_names(self):
print ("next step !!!!! " + str(self.steps.current))
return [TEMPLATES[self.steps.current]]

def done(self, form_list, **kwargs):
print "Wizard done"
#do_something_with_the_form_data(form_list)
return HttpResponseRedirect("http://TO_FILL_IN")

realEstate / addProperty.html

{% extends "realEstate/base.html" %}
{% load socialaccount %}

{% load i18n %}

{% block head %}
{{ wizard.form.media }}
{% endblock %}


{% block content %}

<h1> Insert an ad </h1>

<p>Step {{ wizard.steps.step1 }} of {{ wizard.steps.count }}</p>

<form  class="form-horizontal" role="form"  action="" method="post">{% csrf_token %}

<table>

{{ wizard.management_form }}

</table>

{{ form.non_field_errors }}
<fieldset>
<legend>Localisation</legend>
<div class="form-group">
{{ form.country.errors }}
<label class="col-lg-1" for="id_country">{{form.country.label}}</label>
<div class="col-lg-1">
{{ form.country }}
</div>
</div>
</fieldset>

</fieldset>
{% if wizard.steps.prev %}
<button name="wizard_goto_step" type="submit" value="{{ wizard.steps.first }}">{% trans "first step" %}
</button>
<button name="wizard_goto_step" type="submit" value="{{ wizard.steps.prev }}">{% trans "prev step" %}
</button>
{% endif %}

<input type="submit" value="{% trans "submit" %}"/>

</form>


{% endblock %}

回答:

回答№1は1

それが誰かを助けることができるとちょうど思った。

問題は、フィールドの1つがフォームで定義されていないため、テンプレートに含めるのを忘れたことです。

ウィザードの動作は正しかった。最初のページでエラーが発生しましたが、フィールドが表示されなかったため、画面にエラーは表示されませんでした。

私は頭がおかしくなりましたが、それは私のせいでした。

乾杯