理解Django的urlconf

时间:2013-06-05 20:12:15

标签: python regex django

我试图了解这一行:url(r'^(?P<poll_id>\d+)/$', views.detail, name='detail'),来自Django's tutorial如何创建视图。

特别是,我不了解以下内容:

  • ?P
  • \ d +
  • 名=&#39;细节&#39;

urls.py

urlpatterns = patterns('',
    # ex: /polls/
    url(r'^$', views.index, name='index'),
    # ex: /polls/5/
    url(r'^(?P<poll_id>\d+)/$', views.detail, name='detail'),
    # ex: /polls/5/results/
    url(r'^(?P<poll_id>\d+)/results/$', views.results, name='results'),
    # ex: /polls/5/vote/
    url(r'^(?P<poll_id>\d+)/vote/$', views.vote, name='vote'),
)

1 个答案:

答案 0 :(得分:9)

  • (?P<poll_id>...)创建named group;您现在可以通过名称引用该组中匹配的内容。

    视图将在调用时通过该名称传递关键字参数。

  • \d是一个字符组,它匹配ASCII数据的数字位数(09)。 +是量词;只有一个或多个数字匹配。

  • name='detail'为网址格式命名,以便您稍后在创建反向网址时按名称引用它。请参阅Django手册中的Naming URL patterns

总而言之,该模式匹配以数字开头的URL,后跟一个/斜杠,导致Django调用views.detail视图,将匹配的数字作为{{1参数。 poll_id关键字可以轻松生成此视图的网址:

name

会生成{% url 'name' poll.id %} 的网址。