【问题标题】:django URL regex optional match (tastypie)django URL 正则表达式可选匹配(tastypie)
【发布时间】:2012-06-15 17:38:31
【问题描述】:

我正在使用 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) ,它的文档中的 sweetpie 注释不能在没有尾部斜杠的情况下工作。 sweetpie 代码中的 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?

【问题讨论】:

  • 您所做的似乎是正确的。我只能认为您可能没有更新正确的代码...尝试用一些可笑的东西替换正则表达式。
  • 我确定我正在编辑正确的代码。该评论表明这种行为是应该发生的。我真正的问题是为什么
  • 这正是美味派喜欢做事的方式。真的很烦人。
  • 其实已经修好了,看答案。

标签: regex django tastypie


【解决方案1】:

此问题已修复。我的 pull request 已于 2012 年 6 月 14 日合并。

【讨论】:

    猜你喜欢
    • 2019-01-15
    • 2011-08-17
    • 2017-09-12
    • 2014-01-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多