【问题标题】:Django URL Reg-ExDjango URL 正则表达式
【发布时间】:2013-07-26 00:09:54
【问题描述】:

大家好

这个表达式实际上是如何工作的?


urlpatterns = patterns('', 
   url(r'^get/(?P<app_id>\d+)/$', 'app.views.app'),
   ...
)

我了解它的作用,至少将用户输入的 url 映射到应用程序视图页面中的app() 函数。我也明白这是一个正则表达式,最终会获取应用程序的 id 并将其映射到 url。但是这个函数要去哪里呢? r'^...?P /$ 是怎么回事(我知道 d+ 是 id 本身的数字正则表达式,仅此而已)。

我也明白这个 url 函数取自 django.conf.urls 模块。

也许我的误解更多地在于我缺乏正则表达式经验。尽管如此,我需要帮助!我不喜欢使用我不理解的东西,并且我很内疚

【问题讨论】:

    标签: python regex django django-urls python-module


    【解决方案1】:

    我们来看看:r'^get/(?P&lt;app_id&gt;\d+)/$'

    1. r'' 表示将字符串引号内的每个字符都假定为字符串字符。
    2. ^ 字符表示正则表达式的开头。例如,forget/123 不会匹配表达式,因为它不以 get 开头,如果符号不存在,它应该匹配它,因为它不会强制匹配的字符串以 @ 开头987654327@,就是字符串中出现的get...
    3. $ 字符表示表达式的结尾。如果不存在,get/123/xd 可能会匹配表达式,这是不希望的。
    4. (?P&lt;&gt;) 是一种为表达式中的组指定名称/别名的方法。

    您应该阅读the python's regular expressions documentation。了解正则表达式非常好,因为它们非常有用。

    希望这会有所帮助!

    【讨论】:

    • 您能否在#2 上稍微扩展一下“与表达式不匹配”​​的含义?我不太理解你的意思,为什么忘记/123 不起作用。另外,“?”呢
    • forget/123 将不起作用,因为使用 ^ 符号您告诉正则表达式,无论要匹配什么,都必须以 get 开头,所以 forget 不会t 匹配,因为在 get 之前有 for。我自己解释了吗,对不起,如果没有,我会再试一次:)
    • 我认为这很有意义,谢谢。我想我明白你在说什么。
    • ? 不是一个单一的符号,是整个语法 (?P&lt;&gt;),正如我所解释的,它声明了括号内匹配组的别名。
    • 是的,url-path。换句话说,就是域名后面的url部分。 http://www.example.com/this/is/whats/matched
    【解决方案2】:

    r 只是更改了以下字符串文字的解释方式。反斜杠 (\) 不被视为转义序列,这意味着字符串中的正则表达式将按原样使用。

    ^ 开头和$ 分别匹配字符串和结尾。

    (?P&lt;name&gt;...) 是一个保存命名组 - 它可以帮助您剪切一部分 url 并将其作为参数传递到视图中。在 django named groups docs 中查看更多信息。

    希望对您有所帮助。

    【讨论】:

      猜你喜欢
      • 2011-03-22
      • 2014-07-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-22
      相关资源
      最近更新 更多