2015-06-12 29 views
0

考虑以下情况,我有一个特定的路线和相应的控制器 并根据请求params我需要执行一些验证,然后完成 请求。执行瓶颈路线的请求参数验证

现在,在未来的团队可能会添加大量的新路线和相应的控制器 我如何可以强制他们总是在参数添加验证的?

@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

是什么验证样子的? “MyController”的用途是什么?你能提供一个有效的例子吗? – dirn

+0

验证是特定于用户和型号的。例如,如果用户被允许访问给定的实例。如果是,他可以修改的属性是什么 – r0h1t4sh

回答

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/