【问题标题】:Reg Ex Django Url Conf正则表达式 Django Urlconf
【发布时间】:2011-03-06 08:34:43
【问题描述】:

这是我的 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/ 下的站点

【问题讨论】:

    标签: regex django urlconf


    【解决方案1】:

    '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/foo 或 /admin/foo/bar。

    【讨论】:

    【解决方案2】:
    【解决方案3】:

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

    r'^polls/$
    

    ^ 表示开头。
    $ 表示结束

    (?P&lt;poll_id&gt;\d+) 表示整数\d+,在我的代码中将被放入变量poll_id

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

    【讨论】:

      【解决方案4】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-07-05
        • 2012-08-21
        • 2011-03-22
        • 2014-06-14
        • 2013-07-12
        • 2019-02-27
        • 2013-07-26
        • 2014-07-08
        相关资源
        最近更新 更多