Flask—08-建立自己的博客

 

  • 自定义字段验证函数

    class RegisterForm(FlaskForm):     ...     def validate_username(self, field):         user = User.query.filter(User.username == field.data).first()         if user:             raise ValidationError('该用户名已注册,请选用其他名称注册')      def validate_email(self, field):         user = User.query.filter(User.email == field.data).first()         if user:             raise ValidationError('该邮箱已注册,请选用其他邮箱注册') 
  • 加密存储密码

    from werkzeug.security import generate_password_hash, check_password_hash  class User(db.Model):     ...       @property     def password(self):         raise AttributeError('你瞅啥?!密码不可读')      @password.setter     def password(self, password):         # 加密保存密码         self.password_hash = generate_password_hash(password)      # 密码校验,True:校验成功,False:校验失败     def verify_password(self, password):         return check_password_hash(self.password_hash, password) 

用户登录退出

  • 登录校验逻辑

    @user.route('/login/', methods=['GET', 'POST']) def login():     form = LoginForm()     if form.validate_on_submit():         u = User.query.filter(User.username == form.username.data).first()         if not u:             flash('无效的用户名')         elif not u.confirmed:             flash('账户尚未激活,请激活后再登录')         elif not u.verify_password(form.password.data):             flash('无效的密码')         else:             flash('登录成功')             return redirect(url_for('main.index'))     return render_template('user/login.html', form=form) 
  • flask-login扩展

    • 说明:它是一个专门用来管理用户登录退出的扩展库,使用非常方便。
    • 安装:pip install flask-login
    • 使用:
    # 第一步:添加扩展 from flask_login import LoginManager  login_manager = LoginManager()  def init_extensions(app):     ...     login_manager.init_app(app)     # 指定登录端点     login_manager.login_view = 'user.login'     # 设置提示信息     login_manager.login_message = '登录后才可访问'  # 第二步:让模型类类基础子UserMixin类,以便拥有状态相关方法 from flask_login import UserMixin  class User(UserMixin, db.Model):       ...  # 第三步:实现回调函数(根据用户id返回用户对象) @login_manager.user_loader def load_user(uid):     return User.query.get(uid) 
    • 总结
    
                            
    关键字:
50000+
5万行代码练就真实本领
17年
创办于2008年老牌培训机构
1000+
合作企业
98%
就业率

联系我们

电话咨询

0532-85025005

扫码添加微信