0

我已经阅读了 5 次文档,我看不到这里缺少什么。

我有一种情况,reverse() 工作正常,但传递给 redirect() 的相同参数失败,并出现错误,指出无法解析地址。

reverse("app:submission_thanks", kwargs={ "data": survey.data.slug, "survey": survey.slug })

redirect("app:submission_thanks", kwargs={ "data": survey.data.slug, "survey": survey.slug })

我的网址是:

url(r'^(?P<data>[-\w]+)/(?P<survey>[-\w]+)/thanks/$',
         TemplateView.as_view(template_name="pasteur/submission_thanks.html"),
         name="submission_thanks",
    ),
4

2 回答 2

1

重定向具有不同的方法签名:

redirect("app:submission_thanks", data=survey.data.slug, survey=survey.slug)

请参阅Django 文档中的快捷方式重定向示例


深入研究代码:redirect(to, *args, **kwargs)调用resolve_url(to, *args, **kwargs)哪个调用urlresolvers.reverse(to, args=args, kwargs=kwargs)。所以这绝对是正确的。

使用or快捷方式时,您不需要将 包装args在列表或kwargs字典中。resolve_urlredirect

于 2013-02-05T20:58:58.987 回答
0

在重定向中传递反向 url:

return redirect(
    reverse("app:submission_thanks",
    kwargs={ "data": survey.data.slug, "survey": survey.slug }))
于 2013-02-05T20:58:50.183 回答