检索IP地址作为Django URL中的参数

时间:2012-12-19 09:20:13

标签: python regex django url filter

我的应用程序列出了一些游戏服务器的IP地址。

我想添加一个简单的搜索引擎,在其中加入正则表达式。我会输入^200.来仅列出以200.

开头的IP地址

表单会通过发送类似的GET请求将我重定向到结果页面:

/servers/search/^200./page/1/range/30/

这是我在urls.py中使用的行:

url(r'^servers/search/(?P<search>[a-zA-Z0-9.]+)/page/(?P<page>\d+)/range/(?P<count>\d+)/$', gameservers.views.index)

但它不像我预期的那样工作。没有显示结果。我故意发出语法错误来查看局部变量。然后我意识到search变量的值如下:

^200./page/1/range/30/

我该如何解决这个问题?我已经考虑过在网址结尾处移动search参数,但是看看是否有办法用下一个/限制值可能会非常有趣。

1 个答案:

答案 0 :(得分:3)

你的正则表达式根本不匹配:你不接受^字符。但即使它是,也不可能在search变量中捕获完整的URL,因为那时URL的其余部分将不匹配。

但是,我不会尝试解决这个问题。试图捕获URL本身的复杂模式通常是一个错误。对于搜索值,将其移动到GET查询参数是完全可以接受的,这样您的URL看起来就像这样:

/servers/search/?search=^200.&page=1&range=30

或者,如果您愿意,您仍然可以捕获网址中的pagerange值,但将search值保留为查询参数。