0

我正在尝试使用 Django 执行以下操作:

  • 包含两种形式的向导
  • 第一个表单是一个简单的表单,包含一些 Ajax 来自动计算一些字段
  • 第二种形式是用户注册

问题如下:

  • 第一个表单显示正确,页面内的 Ajax 工作正常
  • 按下“提交”按钮后,第二个表单永远不会显示

代码如下:

网址.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')

房地产/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

只是认为它可以帮助某人。

问题是表单中未定义其中一个字段,我忘记将其包含在模板中。

向导的行为是正确的。它在第一页上得到了stuc,但由于未显示该字段,因此未在屏幕上显示错误。

让我发疯,但这是我的错。

干杯

于 2013-10-05T06:10:53.960 回答