Что такое UserMixin в Flask? - PullRequest
       40

Что такое UserMixin в Flask?

1 голос
/ 03 августа 2020
from datetime import datetime
from werkzeug.security import generate_password_hash, check_password_hash
from flask_login import UserMixin
from app import db


class User(UserMixin, db.Model):
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(64), index=True, unique=True)
    email = db.Column(db.String(64), index=True, unique=True)
    password_hash = db.Column(db.String(64))
    posts = db.relationship('Post', backref='author', lazy='dynamic')

    def set_password(self, password):
        self.password_hash = generate_password_hash(password)

    def check_password(self, password):
        return check_password_hash(self.password_hash, password)

    def __repr__(self):
        return '<User{}>'.format(self.username)

Я еще не мог понять назначение UserMixin. Кто-нибудь может кратко описать это?

1 Ответ

2 голосов
/ 03 августа 2020

Flask -login требует модели пользователя со следующими свойствами:

  • имеет метод is_authenticated (), который возвращает True, если пользователь предоставил действительные учетные данные.
  • имеет is_active (), который возвращает True, если учетная запись пользователя активна
  • , имеет метод is_anonymous (), который возвращает True, если текущий пользователь является анонимным пользователем.
  • имеет метод get_id (), который, учитывая экземпляр User, возвращает уникальный идентификатор для этого объекта.

Класс UserMixin обеспечивает реализацию этих свойств. Это причина, по которой вы можете позвонить, например, is_authenticated, чтобы проверить правильность предоставленных учетных данных для входа, вместо того, чтобы писать метод, чтобы сделать это самостоятельно.

...