匹配备用网址 - Django URLs 正则表达式

3 投票
2 回答
5229 浏览
提问于 2025-04-15 14:44

我想要一个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))/$'会匹配像helloingood_byeout这样的字符串。

注意,如果你在网址模式中使用了竖线(|)这个符号,Django就无法反向解析这个正则表达式。如果你需要在模板中使用url标签,就需要写两个网址模式,一个是in,一个是out

撰写回答