一、flask框架项目搭建的基础上扩展
MVC框架模式:
- model模型(定义模型-->属性的计算/模型-->封装到模型类中),
- view(模板-->html,css,js)
- control(控制-->将模型显示到视图中-->路由)
在开发中,对模型的处理一般都要放到模板中处理,不要在视图函数中进行相关属性的计算
二、 在项目中的模板视图中直接引入
from datetime import datetime
from werkzeug.security import generate_password_hash, check_password_hash
from . import db
class User(BaseModel, db.Model):
"""用户"""
__tablename__ = "info_user"
id = db.Column(db.Integer, primary_key=True) # 用户编号
nick_name = db.Column(db.String(32), unique=True, nullable=False) # 用户昵称
password_hash = db.Column(db.String(128), nullable=False) # 加密的密码
mobile = db.Column(db.String(11), unique=True, nullable=False) # 手机号
avatar_url = db.Column(db.String(256)) # 用户头像路径
last_login = db.Column(db.DateTime, default=datetime.now) # 最后一次登录时间
is_admin = db.Column(db.Boolean, default=False)
signature = db.Column(db.String(512)) # 用户签名
gender = db.Column( # 订单的状态
db.Enum(
"MAN", # 男
"WOMAN" # 女
),
default="MAN")
# property:将装饰器的方法提升为类属性--->默认为getter方法--->解耦
@property
def password(self):
raise AttributeError("当前属性不可读")
# 定义一个赋值的方法
@password.setter
def password(self, value):
self.password_hash = generate_password_hash(value)
# 定义一个验证密码的方法
def check_password(self, password):
return check_password_hash(self.password_hash, password)
- 密码加密函数定义:
generate_password_hash是一个密码加盐哈希函数,生成的哈希值可通过
check_password_hash()进行验证。
- 哈希之后的哈希字符串格式是这样的:
method$salt$hash
-
参数说明:
password: 明文密码
method: 哈希的方式(需要是hashlib库支持的),格式为
pbpdf2:<method>[:iterations]。参数说明:
method:哈希的方式,一般为SHA1,
iterations:(可选参数)迭代次数,默认为1000。
slat_length: 盐值的长度,默认为8。
flask密码加密验证.png
网友评论