考虑以下情况,我有一个特定的路由和相应的控制器 根据请求参数,我需要执行一些验证然后完成 请求。
现在未来团队可能会添加许多新路线和相应的控制器 我如何强制执行它们总是在参数上添加验证?
@app.route("/do_something", methods=['GET'])
def lets_do_something():
MyController.lets_do_something()
class MyController(object):
def lets_do_something():
model_id = request.args.get("model_id", 0)
# diffferent validation specific to user and model_id
答案 0 :(得分:1)
您可以创建一个执行验证逻辑的装饰器。 因此,对于您或团队成员创建的每条新路线,您只需添加装饰器(在代码示例中为'custom_decorator')
@custom_decorator
@app.route("/do_something", methods=['GET'])
def lets_do_something():
MyController.lets_do_something()
class MyController(object):
def lets_do_something():
model_id = request.args.get("model_id", 0)
# diffferent validation specific to user and model_id
有关创建装饰器的信息,请参阅这些链接
http://thecodeship.com/patterns/guide-to-python-function-decorators/ http://flask.pocoo.org/docs/0.10/patterns/viewdecorators/