【问题标题】:Regular expression mismatch in djangodjango中的正则表达式不匹配
【发布时间】:2011-11-29 00:41:19
【问题描述】:

我目前正在尝试在 RESTful Web 服务上运行一些测试,并使用 django 测试客户端使用 Client.get 测试以下获取请求:

'/api/browse=ia?filter=General' 

这些是我的网址:

(r'^api/browse=([\w\s]+)$', 'webservice_browse_nofilter')
(r'^api/browse=([\w\s]+)\?filter=(\w+)$', 'webservice_browse')

问题是调用了错误的函数。在这种情况下,我想调用第二个函数,而是调用第一个函数。问题是 ?应该作为参数的分隔符,但与第一个模式匹配,该模式仍然将正确的参数“ia”发送到函数而不是整个字符串。我觉得我错过了一些东西,但我不知道是什么。目的是使用参数“ia”和“General”调用第二个函数。

【问题讨论】:

    标签: python regex django


    【解决方案1】:

    为了澄清其他回答者所说的话,之后的所有内容?是 not URL 的一部分,并且不会在正则表达式中匹配。

    【讨论】:

    • 我尝试用 & 代替它,效果很好。
    【解决方案2】:

    这些模式在技术上是相同的 URL,只是查询字符串不同。

    您是否考虑过将它们合并到一个视图中,并测试 request.GET.get('filter') 是否返回任何内容?

    我认为反转它们不会有任何作用——我相信 Django 在处理 URL 时会忽略查询字符串

    【讨论】:

    • 他们已经合并了……有点。 browse_nofilter 函数只需使用适当的参数调用 browse。根据该函数,它没有检测到第二个参数,而是作为函数的输入作为空字符串给出,这表明函数完全忽略过滤器。这里的“General”不等于“All”。
    【解决方案3】:

    Django and query string parameters

    正如 Brett Thomas 所说,您将在 request.GET 中获得查询参数

    【讨论】:

      猜你喜欢
      • 2018-04-16
      • 2011-08-17
      • 2017-09-12
      • 2019-12-26
      • 1970-01-01
      • 1970-01-01
      • 2020-07-02
      • 2014-01-31
      相关资源
      最近更新 更多