我是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
。
我在这里缺少什么?如何实现以后?
答案 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')