Django URL Reg-Ex

时间:2013-07-25 21:38:36

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

大家好

此表达式实际的工作原理是什么?


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

我了解做了什么,至少要将用户输入的网址映射到应用视图页面中的app()功能。我也理解这是一个正则表达式,最终获取应用程序的ID并将其映射到URL。但是这个功能在哪里? r'^ ...发生了什么?P / $(我得到d +是一个数字正则表达式,id本身,但就是这样)。

我也理解这个url函数来自django.conf.urls模块。

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

2 个答案:

答案 0 :(得分:4)

我们来看看:r'^get/(?P<app_id>\d+)/$'

  1. r''表示将字符串中的每个字符作为字符串字符引用。
  2. ^字符表示正则表达式的开头。例如,forget/123与表达式不匹配,因为它不以get开头,如果符号不在那里,它应该匹配它,因为它不会强制匹配的字符串以get开头,只是get...出现在字符串中。
  3. $字符表示表达式的结尾。如果不存在,get/123/xd可能与表达式匹配,这是不可取的。
  4. (?P<>)是一种为表达式中的组提供名称/别名的方法。
  5. 您应该阅读the python's regular expressions documentation。了解正则表达式非常好,因为它们非常有用。

    希望这有帮助!

答案 1 :(得分:1)

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

开头是

^,最后匹配的$和字符串的结尾。

(?P<name>...)是一个保存命名组 - 它可以帮助您剪切网址的一部分并将其作为参数传递到视图中。在django named groups docs中查看更多内容。

希望有所帮助。