这是我的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/$
我不明白这个Regex的作用:
(?P<poll_id>\d+)
我不明白为什么在:
(r'^admin/', include(admin.site.urls))
没有$
标志,它仍然有效......
我不明白我要添加的URLconf,以查看http://127.0.0.1:8000/
答案 0 :(得分:5)
'r'表示'原始'字符串,这使得在尝试编写正则表达式时生活更轻松(您最终不会转义转义符)。 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 / admin会传递给管理员应用程序,而不是/ admin / foo或/ admin / foo / bar。
答案 1 :(得分:1)
答案 2 :(得分:1)
我的python正则表达式生锈了但是这里:
r'^polls/$
^
表示以。开头
$
表示结束
(?P<poll_id>\d+)
表示整数\d+
,我的代码中将整数poll_id
放入变量(r'^admin/', include(admin.site.urls))
{{1}}
没有$因为你可能不希望网址结束。您希望将admin / somethingelse传递给您的admin.sites.urls类。
答案 3 :(得分:0)
r
表示提供的字符串是raw,应忽略转义字符。 (r'^admin/', include(admin.site.urls))
行没有$
,因为它是另一个网址的包含。所以结尾$
位于admin.site.urls
。