首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Django URLresolver,可选值

Django URLresolver,可选值
EN

Stack Overflow用户
提问于 2014-09-23 23:19:08
回答 1查看 72关注 0票数 0

在我的urls.py文件中,我目前有以下解析器:

代码语言:javascript
复制
url(r'$', 'methodology_home')
url(r'^(?P<methodology_type\w+)/$', 'methodology_home')

我希望通过说明methodology_type是可选的(并在我的视图中指定一个带有默认值的参数)来合并这两者。通过简单地添加一个?在regexp中?我一开始是这么想的,但我没能让它工作起来。

有没有人有主意?

谢谢。

EN

回答 1

Stack Overflow用户

发布于 2014-09-23 23:38:03

您可以编写正则表达式来捕获optional url paramater

代码语言:javascript
复制
url(r'^(?:(?P<methodology_type>\w+)/?)?$', 'methodology_home')

但是,这种方法的一个问题是,如果不提供参数,则视图将获得None。这是因为正则表达式实际上是匹配的,并且组的值是None

代码语言:javascript
复制
import re

pattern = re.compile(r'^(?:(?P<methodology_type>\w+)/?)?$')
pattern.match('foo').groupdict()
>>> {'methodology_type': 'foo'}

pattern.match('').groupdict()
>>> {'methodology_type': None}

因此,您可以在视图代码中处理它:

代码语言:javascript
复制
def my_view(request, methodology_type):
    methodology_type = methodology_type or 'default'
    ...

或者你坚持你已经有的两个不同的规则。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25998818

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档