如何在Django <a> links?</a>中工作

时间:2014-01-10 13:15:18

标签: python django

当我看到这个时,有人会向我解释Django教程中究竟发生了什么吗?

{% url 'polls:detail' poll.id %}

输出到底是什么?我理解的poll.id是作为某种论点传递还是附加到url?这究竟是如何工作的?它是在调用url.py并迭代这些urls模式吗?

2 个答案:

答案 0 :(得分:4)

{% url ... %} template tag在您的视图(网址模式)配置中查找命名网址,并生成一个允许浏览器调用该视图的网址。

URL id后面的参数填充到url模式中;如果模式定义为:

url(r'^(?P<poll_id>\d+)/$', views.detail, name='detail'),

(?P<poll_id>\d+)组是网址的第一个“参数”;标记{% url 'polls:detail' poll.id %}采用此模式,并使用poll.id值替换其中的第一个组。

您可以明确地为每个捕获的组命名,而不是位置参数:

{% url 'polls:detail' poll_id=poll.id %}

会达到相同的效果。

因为该教程包含了polls网址路径下的所有polls/网址:

url(r'^polls/', include('polls.urls')),

生成的最终URL使用当前主机名和端口加/polls/,后跟轮询ID和另一个斜杠。如果poll.id1,并且您使用http://localhost:8000/访问了您的网站,则所有内容都汇总为:

http://localhost:8000/polls/1/

答案 1 :(得分:0)

输出将是:

 /url/absolute/depending.on.urls.py

将它与“a”一起使用只需:

<a href="{% url 'polls:detail' poll.id %}">Poll {{ poll.id }}</a>