分组匹配错误,django url dispatcher

Posted

技术标签:

【中文标题】分组匹配错误,django url dispatcher【英文标题】:grouping matching error, django url dispatcher 【发布时间】:2014-01-20 11:58:21 【问题描述】:

我只是想知道是否可以像这样在 django 中创建一个大 url 模式:

url(r'^/foo('/limit/(?P<limit>\d+)/|/offset/(?P<offset>\d+)/|/limit/(?P<limit>\d+)/offset/(?P<offset>\d+)/|/offset/(?P<offset>\d+)/limit/(?P<limit>\d+)/?$', 'foo', name='foo'),

避免写:

url(r'^/foo/limit/(?P<limit>\d+)/?$', 'foo', name='foo'),
url(r'^/foo/offset/(?P<offset>\d+)/?$', 'foo', name='foo'),
url(r'^/foo/limit/(?P<limit>\d+)/offset/(?P<offset>\d+)/?$', 'foo', name='foo'),
url(r'^/foo//offset/(?P<offset>\d+)/limit/(?P<limit>\d+)/?$', 'foo', name='foo'),

我收到第一个分组错误。

我的目标是每个端点只写一个 url 以加快 django 搜索 url 正则表达式模式,因为如果我写大量的 url 模式需要很多,尽管每个端点只写一个 url 并制作 @ 987654323@,offset 可选,但是当我想写/foo/offset/1/limit/1 时,这不起作用我希望能够以任何顺序对参数发出请求(假设我有 7 个端点参数......看看在哪里这是怎么回事?)

有什么想法或建议吗?

谢谢

【问题讨论】:

如果他们都调用同一个视图函数,也许使用查询字符串参数会更容易?来自正则表达式文档:“每个组名只能在正则表达式中定义一次”。 是的,这是当前的解决方案,我想这样做。你认为我想把事情复杂化吗? 我想如果我需要支持与顺序无关的参数并且不想只使用查询字符串(这仍然是我的第一选择),我会捕获多个名称/值对并在我的意见。但即使这样也很痛苦,因为您不能只是重复该组 - 您需要在 URL 中重复七次 (?(\w+)/(\d+)/)? 之类的内容。呃。 mmm 我明白你的意思,实现像名称/值对这样的解决方案真的很难看......我想不可能按照我想要的方式去做。谢谢!!!!!! 【参考方案1】:

在大多数 REST API 中,我看到“limit”和“offset”(或“start”和“count”)是查询参数:

https://blog.apigee.com/detail/restful_api_design_can_your_api_give_developers_just_the_information

【讨论】:

以上是关于分组匹配错误,django url dispatcher的主要内容,如果未能解决你的问题,请参考以下文章

Django的urls(路由)

Django-url配置(分组)

django之路由层

Django知识点

Django url (路由)

django的urls