Django:在错误的url提交点

Django:在错误的url提交点,django,render,formwizard,django-formwizard,Django,Render,Formwizard,Django Formwizard,我在同一个应用程序中有两个表单,一个基于Django FormWizard和“普通”表单。“普通”表单工作正常,但当我使用向导创建的表单时,用户会被重定向到普通表单,而不会进入下一个表单步骤 向导窗体位于../app/NewEntry下。当我遇到表单的第二个阶段并单击submit时,我会被重定向到../app,尽管html文件中的html代码显示action=' 由于它只发生在第二阶段,我认为它与render_模板函数有关,但我不明白为什么 forms.py看起来像: 1 from djan

我在同一个应用程序中有两个表单,一个基于Django FormWizard和“普通”表单。“普通”表单工作正常,但当我使用向导创建的表单时,用户会被重定向到普通表单,而不会进入下一个表单步骤

向导窗体位于../app/NewEntry下。当我遇到表单的第二个阶段并单击submit时,我会被重定向到../app,尽管html文件中的html代码显示action='

由于它只发生在第二阶段,我认为它与render_模板函数有关,但我不明白为什么

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)
url.py的定义如下

######################################################
     (r'^app/$', app_startpage),
     (r'^app/NewEntry$', appWizard([appStart, appLocationConfirmation, reMapData])),
######################################################
因此,只要调用appLocationConfirmation,URL就会从/app/NewEntry(向导的URL)更改为/app。我不明白为什么?

非常感谢您的帮助或澄清。
谢谢。

我以前也遇到过类似的问题,因为缺少最后一个正斜杠。我怀疑原始海报会在这么晚的时候回复,但是对于任何偶然发现这个问题的人,请仔细检查您的URLconf是否包含尾随斜杠,如下所示:


r'^reMap/NewEntry/$”
而不是
r'^reMap/NewEntry$”

这是您完整的
reMapLocationConfirmation
?我认为我们需要看到这一点来解决这个问题。是的,这是完整的重新封装确认。是的,是同一个人,只是一台不同的电脑(电子邮件是一样的)。很抱歉,麦克斯,开始点击回答你问题的答案旁边的复选框。这就是stackoverflow的工作原理。我查看了
FormWizard
类,也没有看到任何可以执行重定向的内容。能否删除render_模板函数并查看它是否解决了问题?在最坏的情况下,我认为它应该抛出一个哈希失败的错误,但让我们排除它。我对代码进行了修改,如果我将reMapWizard的
url.py
更改为一级链接,比如
(r'^remapest/$,reMapWizard([reMapStart,reMapLocationConfirmation,reMapData]),
。我不明白为什么。。。