在教程中的url映射期间,我遇到了这段代码:
url(r'^category/(?P<category_name_slug>[\w\-]+)/$', views.category, name='category')
除了这一部分,我确实理解了一些事情:
(?P<category_name_slug>[\w\-]+)
我之前看过{?P<...
,但之前我从未见过[\w\-]+)
,而且我无法在互联网上找到解释。
希望你能帮助我;)
答案 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)