gpt4 book ai didi

python - 如何在Flask路由(Werkzeug)中验证整数范围?

转载 作者:行者123 更新时间:2023-12-03 15:36:24 28 4
gpt4 key购买 nike

我的 flask 应用程序中具有以下路由

from foo import get_foo

@app.route("/foo/<int:id>")
def foo_id(id):
return render_template('foo.html', foo = get_foo(id))

Foo的ID可以在1-300之间。我在哪里可以进行此验证?

我可以在get_foo中进行验证。但是,我不确定这是否是最佳做法。我应该在路由定义本身中对其进行过滤吗?

@app.route("/foo/<int:id(1-300)")这样的东西(我不知道执行此操作的确切方法。

我该如何满足我的需求?

最佳答案

Flask使用了Werkzeug路由系统,在检查了Werkzeug URL Routing docs之后,我发现可以在路由规则中进行范围控制。

From Werkzeug docs

class werkzeug.routing.IntegerConverter(map, fixed_digits=0, min=None, max=None)


因此,您可以像这样在路由规则中设置关键字参数 minmax:
@app.route("/foo/<int(min=1, max=300):id>")
如果 id超出范围,则请求将获得响应 404
希望这可以帮助。

编辑评论:
因此,范围验证有两种选择

路由中的
  • get_foo方法
  • 中的


  • 我认为选择取决于您自己的情况。
    如上所述,如果404超出范围,则第一个选项将立即响应id
    在第二种方法中,您可以验证id的范围,并执行您想处理的错误请求。

  • 关于python - 如何在Flask路由(Werkzeug)中验证整数范围?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19076226/

    28 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com