django URL正则表达式可选匹配(tastypie)

时间:2012-06-12 19:24:43

标签: regex django tastypie

我正在使用tastypie为我的应用程序提供API。我更喜欢没有尾部斜杠的URL。我更喜欢/api/v1/entry/set/1;3而不是/api/v1/entry/set/1;3/。我已经关闭了django的APPEND_SLASH并启用了TASTYPIE_ALLOW_MISSING_SLASH

这很好用,除了get_multiple(/ set),其文档中的tastypie注释在没有尾部斜杠的情况下无法工作。来自tastypie代码的URL正则表达式为:

# Due to the way Django parses URLs, ``get_multiple`` won't work without
# a trailing slash.
...
url(r"^(?P<resource_name>%s)/set/(?P<%s_list>\w[\w/;-]*)/$" %
             (self._meta.resource_name, self._meta.detail_uri_name),
             self.wrap_view('get_multiple'), name="api_get_multiple"),
...

我已经证实这是真的。如果启用APPEND_SLASH,则/api/v1/notes/set/2;1/api/v1/notes/set/2;1/匹配正常,但将上述正则表达式中的/更改为/?会使django与模式不匹配。

当我尝试手动使用re模块时,模式正确匹配。为什么django不匹配没有尾部斜杠的URL?

1 个答案:

答案 0 :(得分:0)

这已得到修复。我的pull request于2012年6月14日合并。