【问题标题】:insert a function into more than one blueprints in Flask将一个函数插入到 Flask 中的多个蓝图中
【发布时间】:2014-06-15 18:14:49
【问题描述】:

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

1 个帐户
2个主要的

不过我还有一个功能可以检查用户浏览器中是否存在会话

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

有什么提示吗? 现在我只需在我的两个蓝图视图中插入两次。

【问题讨论】:

    标签: python function session flask


    【解决方案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

    他解释了如何制作装饰器。

    【讨论】:

      【解决方案2】:

      Blueprint 非常类似于Flask 应用程序,您可以在两者中找到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
      

      【讨论】:

        猜你喜欢
        • 2020-05-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-11-08
        相关资源
        最近更新 更多