匹配备用网址 - Django URLs 正则表达式
我想要一个Django的URL,只能有两个选择:/module/in/
或者 /module/out/
。
我现在使用的是
url(r'^(?P<status>\w+[in|out])/$',
'by_status',
name='module_by-status'),
但是它会匹配到其他的模式,比如 /module/i/
、/module/n/
和 /module/ou/
。
任何提示都很感谢 :)
2 个回答
1
你想要的是 (in|out),方括号 [] 表示一个字符类,里面包含了字符 'i'、'n'、'|'、'o'、'u' 和 't'。
10
试试这个:r'^(?P<status>in|out)/$'
你需要去掉\w+
,这个是用来匹配一个或多个字母、数字或下划线的。bstpierre的回答中建议的正则表达式'^(?P<status>\w+(in|out))/$'
会匹配像helloin
、good_byeout
这样的字符串。
注意,如果你在网址模式中使用了竖线(|)这个符号,Django就无法反向解析这个正则表达式。如果你需要在模板中使用url标签,就需要写两个网址模式,一个是in
,一个是out
。