教程中的Django HttpResponseRedirect反向函数

时间:2009-08-26 16:18:30

标签: django http redirect

有人可以通过Django Tutorial Part 4

解释一下这里发生了什么

具体来说,地图功能如何运作?

我知道不应在视图函数中对URL进行硬编码。

return HttpResponseRedirect(reverse('mysite.polls.views.results', args=(p.id,)))

2 个答案:

答案 0 :(得分:7)

reverse函数可以访问Django用于查找传入URL的视图函数的URL映射。在这种情况下,您传入一个视图函数及其将获取的参数,并找到将映射到它的URL。然后,HttpResponseRedirect函数创建一个响应,指示浏览器访问该URL。

这是一种说法,“现在调用mysite.polls.views.results视图。”

答案 1 :(得分:1)

在Django中定义URL时,您可以选择为URL指定名称:url(正则表达式,视图,kwargs =无,名称=无,前缀=''),例如它们in the tutorial命名的内容它poll_results

url(r'^(?P<object_id>\d+)/results/$', 
'django.views.generic.list_detail.object_detail',
dict(info_dict, template_name='polls/results.html'), 'poll_results'),

此模式有一个命名组:object_id。 reverse函数查找名为poll_results的URL模式,并将p.id传递给URL模式中的object_id。该函数返回从正则表达式和传递的参数构建的URL。