我正在使用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?