django中的正则表达式不匹配

时间:2011-11-29 00:41:19

标签: python regex django

我目前正在尝试在RESTful Web服务上运行一些测试,并使用django测试客户端使用Client.get测试以下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'调用第二个函数。

3 个答案:

答案 0 :(得分:1)

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

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

我不认为反转它们会做任何事情 - 我相信Django在处理URL时会忽略查询字符串

答案 1 :(得分:1)

请参阅Django and query string parameters

正如Brett Thomas所说,您将在request.GET

中提供查询参数

答案 2 :(得分:1)

澄清其他回答者所说的话,一切都在之后? 是网址的一部分,并且在正则表达式中不会匹配。