我已经阅读了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",
),
答案 0 :(得分:1)
重定向具有不同的方法签名:
redirect("app:submission_thanks", data=survey.data.slug, survey=survey.slug)
请参阅Django文档中的shortcut redirect examples。
稍微深入了解代码:redirect(to, *args, **kwargs)
调用resolve_url(to, *args, **kwargs)
调用urlresolvers.reverse(to, args=args, kwargs=kwargs)
。所以这绝对是正确的。
使用args
或kwargs
快捷方式时,您无需将resolve_url
打包在列表中,也可以将redirect
打包在字典中。
答案 1 :(得分:0)
在重定向中传递反向网址:
return redirect(
reverse("app:submission_thanks",
kwargs={ "data": survey.data.slug, "survey": survey.slug }))