У меня есть две формы в одном приложении, одна основана на Django FormWizard и "нормальной" форме. «Нормальная» форма работает нормально, но когда я использую форму, созданную мастером, пользователь перенаправляется на обычную форму и не переходит к следующему шагу формы.
Форма мастера находится в ../app/NewEntry. Когда я сталкиваюсь со 2-м этапом формы и нажимаю на кнопку отправить, я перенаправляюсь на ../app, даже если в HTML-коде написано action = '.' в HTML-файл.
Поскольку это происходит только на втором этапе, я подумал, что это как-то связано с функцией render_template, но я не понимаю, почему.
forms.py выглядит так:
1 from django.http import HttpResponseRedirect
2 from django.contrib.formtools.wizard import FormWizard
3 from django import forms
4 from django.forms.widgets import RadioSelect
5 from geoCode import getLocation
6 from renooble.pp.models import Project
7
8 class appStart(forms.Form):
9 location = forms.CharField()
10 CHOICES = [(x, x) for x in ("cars", "bikes")]
11 technology = forms.ChoiceField(choices=CHOICES)
12
13 class appLocationConfirmation(forms.Form):
14 locations = forms.CharField()
15
16 class appData(forms.Form):
17 capacity = forms.IntegerField()
18
19 class appWizard(FormWizard):
20
21 def render_template(self, request, form, previous_fields, step, context=None):
22 if step == 1:
23 location = request.POST.get('0-location')
24 address, lat, lng, country = getLocation(location)
25 form.fields['locations'] = forms.ChoiceField(widget=RadioSelect(), choices = [])
26 form.fields['locations'].choices = [(x, x) for x in address]
27 return super(appWizard, self).render_template(request, form, previous_fields, step, context)
28
29
30 def done(self, request, form_list):
31 # Send an email or save to the database, or whatever you want with
32 # form parameters in form_list
33 return HttpResponseRedirect('/contact/thanks/')
34
35 class reMapRedefine(forms.Form):
36 LIMIT_CHOICES = (
37 ('1', '1'),
38 ('2', '2'),
39 ('30', '30'),
40 )
41 numberLimit = forms.CharField(widget=forms.Select(choices=LIMIT_CHOICES))
42
43 country_list = [('Worldwide', 'Worldwide')]
44 country_list = country_list + [(query.country, query.country) for query in Project.objects.all()]
45 country = forms.ChoiceField(required=False, label='Country', choices=country_list)
urls.py определены следующим образом
######################################################
(r'^app/$', app_startpage),
(r'^app/NewEntry$', appWizard([appStart, appLocationConfirmation, reMapData])),
######################################################
Итак, как только вызывается appLocationConfirmation, URL-адрес изменяется с / app / NewEntry (url для мастера) на / app. Я не понимаю, почему?
Любая помощь или разъяснение высоко ценится.
Спасибо.