【问题标题】:Django, redirected url is not properDjango,重定向的网址不正确
【发布时间】:2014-03-20 20:49:33
【问题描述】:

我是 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

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

【问题讨论】:

  • success_url 必须是 url,而不是模板名称
  • 对不起,我给了错误的网址。我已经修改了重定向的 URL。请再次检查。

标签: python django


【解决方案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

在你的意见中.py

【讨论】:

  • 嗨,我遇到了异常,The included urlconf myapp.urls doesn't have any patterns in it
  • 显示编辑和粘贴错误。它似乎错误在不同的行。
  • 嗨,它解决了 reverse_lazy 的错误。 stackoverflow.com/questions/6482573/…
  • 很好。感谢更新,了解reverse_lazy。以前不知道。
【解决方案2】:

您错误地将模板名称放在类的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')

【讨论】:

  • 对不起,我给了错误的网址。我已经修改了重定向的 URL。请再次检查。
  • 你确定你的网址是template/base_collect吗?
  • 是的。它是正确的。 'template' 是目录名。
  • template/base_collect 必须是 视图模式,而不是目录。换句话说,它需要映射到您的urls.py 某处。您不能定向到“文件”。请更新您的问题并描述您正在尝试做什么。是否要将表单中的结果保存在文件系统的某个位置?
  • 谢谢,我试过template/base_collect。它正在重定向http://127.0.0.1:8000/template/setup-form/template/base_collect
猜你喜欢
  • 1970-01-01
  • 2017-10-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-06
  • 2016-03-30
  • 1970-01-01
  • 2023-03-26
相关资源
最近更新 更多