我想要一个接受所有字符的网址,例如:
(r'^company/(?P<key>[a-zA-Z]+)/doclist/$','CompanyHub.views.docList')
forkey
参数,而不仅仅是 ascii 字母字符 它接受所有字符,包括数字、符号,如 $、-、_、...、字母、unicode 字符、...
我怎样才能做到这一点?
您的代码应如下所示:
(ur'^company/(?P<key>.*)/doclist/$','CompanyHub.views.docList')
我们需要在开头的 'u' 告诉 python 该字符串接受 unicode 字符。
正则表达式看起来像这样:
(.*)
这应该匹配除换行符以外的所有字符。
正如其他人所说:
(.*)
...将匹配所有字符,但它也会匹配一个空字符串(如果正则表达式位于 URL 的末尾,这可能会很糟糕)。如果您想强制要求至少一个字符,请使用以下命令:
(.+)
为了清楚起见,这些在 URL 的中间和末尾都有效,所以像这样的东西非常有效:
url(ur'^package\/(?P<pkgname>.+)\/(?P<pkgversion>.+)', ... )
(正如@tsikov 所说,使用前面的 'u' 表示 unicode)