【发布时间】:2014-06-15 18:14:49
【问题描述】:
我的烧瓶项目中有两个蓝图
1 个帐户
2个主要的
不过我还有一个功能可以检查用户浏览器中是否存在会话
我需要在我的两个蓝图上实现这个功能,它是一个全局应用功能
有什么提示吗? 现在我只需在我的两个蓝图视图中插入两次。
【问题讨论】:
标签: python function session flask
我的烧瓶项目中有两个蓝图
1 个帐户
2个主要的
不过我还有一个功能可以检查用户浏览器中是否存在会话
我需要在我的两个蓝图上实现这个功能,它是一个全局应用功能
有什么提示吗? 现在我只需在我的两个蓝图视图中插入两次。
【问题讨论】:
标签: python function session flask
你可以使用装饰器。
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
他解释了如何制作装饰器。
【讨论】:
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
【讨论】: