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つがフォームで定義されていないため、テンプレートに含めるのを忘れたことです。
ウィザードの動作は正しかった。最初のページでエラーが発生しましたが、フィールドが表示されなかったため、画面にエラーは表示されませんでした。
私は頭がおかしくなりましたが、それは私のせいでした。
乾杯