我有一个包含类别名称的列表,例如cats = ["tv", "movie", "theater"]。我想编写一个 url 模式来仅捕获包含列表中项目之一的 URL,例如:
url(r'^site/CATEGORY_NAME/$', 'mainsite.views.home'),
Run Code Online (Sandbox Code Playgroud)
这样CATEGORY_NAME就只能列出猫中的一项。我怎样才能做到这一点?
谢谢,梅尔
您可以使用 python 的 stringjoin方法从列表中构建正则表达式的一部分,然后在 URL 模式中使用它。
例如:
cats = ["tv", "movie", "theater"]
cats_re = '(?:' + '|'.join(cats) + ')'
# ...then...
url(r'^site/' + cats_re + '/$', 'mainsite.views.home'),
Run Code Online (Sandbox Code Playgroud)
在这种情况下,整个正则表达式将如下所示:
url(r'^site/(?:tv|movie|theater)/$', 'mainsite.views.home'),
Run Code Online (Sandbox Code Playgroud)
由于 URL 匹配是基于正则表达式完成的,因此您可以使用正则表达式匹配多个字符串的能力来执行此操作。的| (pipe) 字符在多个选项之间进行选择,即 (a|b|c) 将匹配 a、b 或 c。
url(r'^site/(tv|movie|theatre)/$', 'mainsite.views.home'),
Run Code Online (Sandbox Code Playgroud)
在Python的正则表达式的文档实在是相当不错,值得一读。
| 归档时间: |
|
| 查看次数: |
4308 次 |
| 最近记录: |