4

这些是我的 django URLconf:

urlpatterns = patterns('',
    ('^hello/$', hello),
    (r'^polls/$', 'mysite.polls.views.index'),
    (r'^polls/(?P<poll_id>\d+)/$', 'mysite.polls.views.detail'),
    (r'^polls/(?P<poll_id>\d+)/results/$', 'mysite.polls.views.results'),
    (r'^polls/(?P<poll_id>\d+)/vote/$', 'mysite.polls.views.vote'),
    (r'^admin/', include(admin.site.urls)),
)

我不明白这个正则表达式中的 r 做了什么:

r'^polls/$

我不明白这个正则表达式的作用:

(?P<poll_id>\d+)

我不明白为什么在:

(r'^admin/', include(admin.site.urls))

没有任何$迹象,它仍然有效......

我不明白我必须添加什么 URLconf 才能看到下面的站点http://127.0.0.1:8000/

4

4 回答 4

5

'r' 表示一个 'raw' 字符串,这使得在尝试编写正则表达式时更轻松(您最终不会转义转义字符)。http://docs.python.org/library/re.html#raw-string-notation

就第二个问题而言,它创建了一个由 1 个或多个数字组成的命名匹配组,并将该值作为“poll_id”传递给视图。http://docs.djangoproject.com/en/1.2/topics/http/urls/#named-groups

管理字符串上没有 $ 的原因是您希望将所有以 /admin 开头的 url 传递给管理应用程序。$ 是定义字符串结尾的特殊字符。因此,如果有一个 $,那么只有 url /admin 将被传递给管理应用程序,而不是 /admin/foo 或 /admin/foo/bar。

于 2010-06-21T14:33:54.040 回答
1

阅读文档,http://docs.djangoproject.com/en/1.2/topics/http/urls/#topics-http-urls

于 2010-06-21T14:33:04.330 回答
1

我的 python 正则表达式生锈了,但这里有:

r'^polls/$

^手段始于。
意味着$结束

(?P<poll_id>\d+)表示\d+在我的代码中将被放入变量中的整数poll_id

(r'^admin/', include(admin.site.urls))
没有 $ 因为您可能不希望 url 在那里结束。您希望将 admin/somethingelse 传递给您的 admin.sites.urls 类。

于 2010-06-21T14:38:14.190 回答
0

提供的r字符串是原始的,应该忽略转义字符。该(r'^admin/', include(admin.site.urls))行没有$,因为它是另一个 url confs 的包含。所以结局$在某处admin.site.urls

于 2010-06-21T14:41:15.043 回答