San*_*San 6 python routing werkzeug flask
我在烧瓶应用程序中有以下路由
from foo import get_foo
@app.route("/foo/<int:id>")
def foo_id(id):
return render_template('foo.html', foo = get_foo(id))
Run Code Online (Sandbox Code Playgroud)
Foo的ID可以在1-300之间.我在哪里可以进行此验证?
我可以在get_foo中进行验证.但是,我不确定这是否是最好的做法.我应该在路线定义中过滤它吗?
类似的东西@app.route("/foo/<int:id(1-300)")(我不知道这样做的确切方法.
我如何满足我的需求?
Leo*_*ung 12
Flask使用Werkzeug路由系统,在检查了Werkzeug URL路由文档后,我发现可以在路由规则中进行范围控制.
来自Werkzeug docs
class werkzeug.routing.IntegerConverter(map,fixed_digits = 0,min = None,max = None)
因此,您可以设置关键字参数,min并max在路径规则中设置如下:
@app.route("/foo/<int(min=1, max=300):id>")
Run Code Online (Sandbox Code Playgroud)
如果id超出范围,请求将得到响应404.
希望这可以帮助.
编辑评论:
因此范围验证有两种选择
get_foo方法中我认为选择取决于你自己的情况.
如上所述,404如果id超出范围,第一个选项将立即响应.
在第二种方式中,您可以验证范围id,并做一些您喜欢的事情来处理不良请求.
| 归档时间: |
|
| 查看次数: |
1450 次 |
| 最近记录: |