flask_alchemy model的一种数据校验方法

原文链接: https://stackoverflow.com/questions/54430924/how-to-catch-an-exception-in-flask-from-sqlalchemy-validate-decorator

https://stackoverflow.com/questions/54430924/how-to-catch-an-exception-in-flask-from-sqlalchemy-validate-decorator

models.py:

from sqlalchemy.orm import validates    

class Apiusers(db.Model):
    __tablename__ = 'apiusers'
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(64), index=True, unique=True)
    email = db.Column(db.String(120), index=True)
    password_hash = db.Column(db.String(128))


    def __repr__(self):
        return self.username

    @validates('username')
    def validate_username(self, key, username):
      if not username:
        raise AssertError('No username provided')
      if Apiusers.query.filter(Apiusers.username == username).first():
        raise AssertError('Username is already in use')

      if len(username) < 5 or len(username) > 20:
        raise AssertError('Username must be between 5 and 20 characters')

      return username

    @validates('email')
    def validate_email(self, key, email):
      if not email:
        raise AssertError('No email provided')
      if not re.match("[^@]+@[^@]+\.[^@]+", email):
        raise AssertError('Provided email is not an email address')
      return email

猜你喜欢

转载自blog.csdn.net/ypgsh/article/details/102585664