Django,重定向网址不合适

时间:2014-02-20 05:22:12

标签: python django

我是Django的新手,我正在创建一个表单,

#forms.py
class SetupForm(forms.Form):
    pass

和相应的观点是

#views.py
class SetupView(FormView):
    template_name = 'template/setup_form.html'
    form_class = SetupForm
    success_url = 'template/base_collect'

    def form_valid(self,form):
        return super(SetupView, self).form_valid(form)

def base(request):
    return render_to_response('template/base_collect.html')

和url模式是,

#urls.py
urlpatterns = patterns(url(r'^setup-form/$', views.SetupView.as_view(), name='setup-form'),
                   url(r'^base_collect/$', views.base),)

提交表单后,重定向的URL显示为

http://127.0.0.1:8000/template/setup-form/template/base_collect.html代替http://127.0.0.1:8000/template/base_collect

我在这里缺少什么?如何实现以后?

2 个答案:

答案 0 :(得分:1)

修改如下:

#urls.py
urlpatterns = patterns(
    url(r'^setup-form/$', views.SetupView.as_view(), name='setup-form'),
    url(r'^base_collect/$', views.base, name = 'base-form'),
)

替换

success_url = 'template/base_collect.html'

success_url = reverse('base-form')

导入

from django.core.urlresolvers import reverse

在views.py

答案 1 :(得分:0)

您错误地将模板名称放在该类的success_url属性中。您也不需要其他两种方法,因为它们没有为默认的FormView类提供任何功能。

class SetupView(FormView):
    template_name = 'template/setup_form.html'
    form_class = SetupForm
    success_url = 'collect/base_collect'  # the URL goes here

    #def form_valid(self,form):
    #    return super(SetupView, self).form_valid(form)
    #def base(request):
    #    return render_to_response('template/base_collect.html')