Reg Ex Django Url Conf

Mac*_*hon 4 regex django urlconf

这些是我的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)),
)
Run Code Online (Sandbox Code Playgroud)

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

r'^polls/$
Run Code Online (Sandbox Code Playgroud)

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

(?P<poll_id>\d+)
Run Code Online (Sandbox Code Playgroud)

我不明白为什么在:

(r'^admin/', include(admin.site.urls))
Run Code Online (Sandbox Code Playgroud)

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

我不明白我要添加什么URLconf,以查看下面的网站 http://127.0.0.1:8000/

Jos*_*ght 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都传递给管理员应用程序.$是一个特殊字符,用于定义字符串的结尾.所以如果有$,那么只有url/admin会被传递给admin应用程序,而不是/ admin/foo或/ admin/foo/bar.