Skip to main content
 首页 » 编程设计

python之在 Django URL 中检索 IP 地址作为参数

2024年08月29日30bhlsheji

我的应用程序列出了一些游戏服务器的 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 参数移动到 url 的结尾,但看看是否有一种方法可以限制下一个 / 的值可能会很有趣。

请您参考如下方法:

您的正则表达式根本不匹配:您不接受 ^ 字符。但即使是这样,也无法在 search 变量中捕获完整的 URL,因为 URL 的其余部分将不匹配。

但是,我不会尝试解决这个问题。试图在 URL 本身中捕获复杂的模式通常是错误的。对于搜索值,将其移至 GET 查询参数是完全可以接受的,这样您的 URL 将如下所示:

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

或者,如果您愿意,您仍然可以在 URL 中捕获 page 和 range 值,但将 search 值保留为查询参数。