在Flask中将函数插入到多个蓝图中

时间:2014-06-15 09:42:25

标签: python function session flask

我的烧瓶项目中有两个蓝图

1个帐户
2主要

但是我也有一个功能来检查用户的浏览器中是否存在会话

我需要将这个功能实现到我的两个蓝图中,它是一个全局应用功能

任何提示? 现在我只在我的两个蓝图视图中插入两次。

2 个答案:

答案 0 :(得分:1)

你可以使用装饰。

import flask, flask.views
import functools
app = flask.Flask(__name__)

def login_required(method):
    @functools.wraps(method)
    def wrapper(*args, **kwargs):
        if 'username' in flask.session:
            return method(*args, **kwargs)
        else:
            flask.flash("A login is required to see the page!")
            return flask.redirect(flask.url_for('index'))
    return wrapper

class Account(flask.views.MethodView):
    @login_required

Login Tutorial

他解释了如何制作装饰。

答案 1 :(得分:0)

BlueprintFlask应用程序非常相似,您可以在两者中找到before_request等方法。在你的情况下before_request寻找解决方案。所以你可以扩展蓝图:

class MyBlueprint(Blueprint):

    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.before_request(self.do_something_before_request)

    def do_something_before_request(self):
        pass