新手:需要对这个Django网址进行一些解释

时间:2015-02-22 17:13:40

标签: python django django-urls

在教程中的url映射期间,我遇到了这段代码:

url(r'^category/(?P<category_name_slug>[\w\-]+)/$', views.category, name='category')

除了这一部分,我确实理解了一些事情:

(?P<category_name_slug>[\w\-]+)

我之前看过{?P<...,但之前我从未见过[\w\-]+),而且我无法在互联网上找到解释。

希望你能帮助我;)

3 个答案:

答案 0 :(得分:4)

[\w-]+表示“一个或多个单词字符或破折号”。

“单词字符”是字母(小写和大写),数字和下划线。

方括号括起一组字符(显式,或由\w等转义序列隐含)。短划线(如果它是集合的一部分)必须位于结尾处,就在紧密括号之前(否则表示范围,例如,[a-c]表示“a,b,或者C“)。

+后缀在正则表达式中始终表示“一个或多个”。

(?P<name>...)构造中包含模式的一部分(比如“...”作为占位符)意味着该模式匹配的部分(在RE术语中称为 )可以使用您刚刚指定的符号名称访问(未命名组,通过(...)中的简单括号进行访问,只能通过数字从左到右访问。 / p>

答案 1 :(得分:2)

(?P<category_name_slug>[\w \ -]+) 表示您期望一个或多个将映射到category_name_slug变量的单词或短划线并将其传递到您的视图中。

所以在你看来,你会有这样的事情:

 def yourView(self,request,category_name_slug):
     // here you can use category_name_slug

答案 2 :(得分:1)

您可以在Python Regex文档页面中找到每个组合:

Python Version 2.7.9: 7.2. re - Regular expression operations

我希望这有帮助。