0

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'),
)

ビュー.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 %}
4

1 に答える 1

1

それが誰かを助けることができると思っただけです。

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

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

私を夢中にさせたが、それは私のせいだった。

乾杯

于 2013-10-05T06:10:53.960 に答える