有人可以通过Django Tutorial Part 4
解释一下这里发生了什么具体来说,地图功能如何运作?
我知道不应在视图函数中对URL进行硬编码。
return HttpResponseRedirect(reverse('mysite.polls.views.results', args=(p.id,)))
答案 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。