蓝本可以认为是一类路由的集合。一个Web App实现多个蓝本的目的是,把不同的路由分开,便于维护。
再来复习一下,创建蓝本。
1、在app包下创建新package,命名为auth。
2、创建蓝本对象实例
# app/auth/__init__.py
from flask import Blueprint #引入Blueprint类
auth = Blueprint('auth',__name__) #创建实例
from . import views #引入app/auth/views.py
3、实现视图函数
# app/auth/views.py
@auth.route('/login')
def login():
return render_template('auth/login.html')
注意Flask认为模板的路径是相对于程序模板文件夹而言的(即app/templates)。因此,render_template('auth/login.html')中的'auth/login.html'其实是auth/templates/auth/login.html
4、在app中注册auth蓝本
# app/__init__.py
def create_app(config_name):
#...
from .auth import auth as auth_blueprint #引入蓝本实例
app.rgister_blueprint(auth_blueprint,url_prefix='/auth') #注册蓝本到app
return app
下面进入正文
Flask-Login是专门用来管理用户认证系统中的认证状态,且不依赖特定的认证机制。
使用前,还是老规矩安装:
扫描二维码关注公众号,回复:
1800466 查看本文章
# pyCharm Terminal
pip install flask-login
一、准备用于登录的用户模型
想要使用Flask-Login扩展,用户模型(对应数据库中的User表)必须实现的方法有:
但是,更简单的方法是:使用flask_login.UserMixin类。UserMixin类有上述四个方法的默认实现,且能满足大多数需求。
使用方法是。直接继承就可以。
还记得,ORM的模型改了,要把更改提交到数据库需要怎么做吗?
二、Flask-Login在程序工厂函数中初始化
from flask_login import LoginManager
login_manager = LoginManager() #创建实例
login_manager.session_protection = 'strong' #用户认证的保护级别
login_manager.login_view = 'auth.login' #设置登录页面的端点
def create_app(config_name):
app = Flask(__name__)
app.config.from_object(config[config_name])
#...
login_manager.init_app(app) #注册到app
三、实现一个回调函数
Flask-Login要求程序实现一个回调函数,使用指定的标识符加载用户。
# app/models.py
from . import login_manager
@login_manager.user_loader #flask-login要求实现的回调函数
def load_user(user_id):
return User.query.get(int(user_id))
回调函数,接受以Unicode字符串形式表示的用户标识符,在数据库中用用户标识符查找。如果能找到返回用户对象,否则 返回None。