将常见逻辑放在Flask路线

时间:2017-12-03 13:31:38

标签: python flask

我有一个带有许多路径端点的烧瓶应用程序。在每个路由中,我需要做一些常见的操作,如身份验证检查,许可验证逻辑,XSS验证和一些更常见的验证逻辑。我已经阅读了一些帖子,其中提到在每个验证验证方法中使用login_required装饰器。

现在我的问题是我应该为每种验证类型创建一个装饰器,并在每个方法中使用它们。请让我知道如何在Flask应用程序中处理此类情况。

@Login_required()
@Xss_validate()
@permission_check()
def subsribe_service(cs_dict, data_dict):
    Logic to subscribe....

@Login_required()
@Xss_validate()
@permission_check()
def unsubsribe_service(cs_dict, data_dict):
    Logic to unsubscribe....

@Login_required()
@Xss_validate()
@permission_check()
def delete_service(cs_dict, data_dict):
    Logic to delete....

@Login_required()
@Xss_validate()
@permission_check()
def edit_service(cs_dict, data_dict):
    Logic to edit....

正如您所看到的,我在所有动作方法中都有一个共同的逻辑作为装饰器。我在所有应用程序中都有这样的装饰器,因为每个动作都需要这3个逻辑。

2 个答案:

答案 0 :(得分:1)

添加:您可以使用类似于基于类的视图的可插入视图: 鸡蛋:

from flask import Flask
from flask.views import MethodView

app = Flask(__name__)

class BaseViews(MethodView):
    decorators = [Login_required, Xss_validate, permission_check]

class SubsribeService(BaseViews):
    def get(self):
        # get Logic

    def post(self):
        # post logic

class EditService(BaseViews):
    def get(self):
        # get Logic

    def post(self):
        # post logic

app.add_url_rule('/subsribe_service/', view_func=SubsribeService.as_view('subsribe_service'), methods=['GET', 'POST'])
app.add_url_rule('/edit_service/', view_func=EditService.as_view('edit_service'), methods=['GET', 'POST'])
简单轻松又美丽..!

答案 1 :(得分:0)

看看这个烧瓶延长件
Flask-WTF

Flask-Login

Flask-Principal

这些扩展已经包含了你提到的所有内容