Python Eve包含过滤器

3 投票
2 回答
3665 浏览
提问于 2025-04-18 02:53

有没有办法返回某个字段包含特定值的项目呢?比如:

GET /people?contains="foo"

这个请求会返回所有名字里包含'foo'这个词的人。

提前谢谢你!

2 个回答

0

我自己对Eve不是很熟悉。不过从它的网站上看,似乎可以使用Flask的所有功能。

你需要查看一下这个文档页面,它讲的是如何获取请求数据。

在你的Flask应用中,定义一个方法,这个方法可以同时处理POST和GET请求,然后你就可以通过 request.args.get('contains', '') 来获取 foo 的值。

这就是我想表达的意思:

@app.route('/people', methods=['POST', 'GET'])
def get_people():
    search_key = request.args.get('contains', '')
    #search for people containing 'foo' in your DB

希望这能给你一个开始的方向,让你知道该怎么做。

13

你可以使用mongodb的$regex操作符,但在Eve中默认是被禁止的(MONGO_QUERY_BLACKLIST = ['$where', '$regex'])。

你可以在你的settings.py文件中添加MONGO_QUERY_BLACKLIST = ['$where']。这样你就可以像这样查询你的API:

?where={"name": {"$regex": ".*foo.*"}}

不过要小心。如果你不能控制客户端,开启正则表达式可能会让你的API更容易受到攻击。

撰写回答