zoukankan      html  css  js  c++  java
  • Flask实战第38天:前台模型创建

    安装shortuuid

    pip install shortuuid

    编辑front.models.py

    from exts import db
    import shortuuid
    from werkzeug.security import generate_password_hash, check_password_hash
    import enum
    from datetime import datetime
    
    class GenderEnum(enum.Enum):
        MALE = 1
        FEMALE = 2
        SECRET = 3
        UNKNOW = 4
    
    
    class FrontUser(db.Model):
        __tablename__ = 'front_user'
        #这里的id如果我们还使用自动增长,就会存在商业安全隐患,用户可以根据id推算出我们网站的人数
        #不使用自动增长,又要保证id的唯一性,我们就可以使用uuid
        #虽然uuid好用,但是它太长了,查找的效率会降低
        #这时我们就可以使用shortuuid这个库,它既满足了唯一性,又没有uuid那么长
        id = db.Column(db.String(100), primary_key=True, default=shortuuid.uuid)
        telephone = db.Column(db.String(11), nullable=False)
        username = db.Column(db.String(50), nullable=False)
        _password = db.Column(db.String(100), nullable=False)
        email = db.Column(db.String(50), unique=True)
        realname = db.Column(db.String(50))
        avatar = db.Column(db.String(50))
        signature = db.Column(db.String(100))
        gender = db.Column(db.Enum(GenderEnum), default=GenderEnum.UNKNOW)
        join_time = db.Column(db.DateTime, default=datetime.now)
    
        #对password对应的是_password,所以要做处理
        def __init__(self, *args, **kwargs):
            if "password" in kwargs:
                self.password = kwargs.get('password')
                kwargs.pop("password")
            super(FrontUser, self).__init__(*args, **kwargs)
    
    
        @property
        def password(self):
            return self._password
    
        @password.setter
        def password(self, newpwd):
            self._password = generate_password_hash(newpwd)
    
        def check_password(self, rawpwd):
            return check_password_hash(self._password, rawpwd)

    同步到数据库

    python manage.py db migrate
    python manage.py db upgrade

    然后我可以在manage.py中配置命令来添加前台用户

    from apps.front import models as front_models
    
    FrontUser = front_models.FrontUser
    ...
    
    @manager.option('-t', '--telephone', dest='telephone')
    @manager.option('-u', '--username', dest='username')
    @manager.option('-p', '--password', dest='password')
    def create_front_user(telephone, username, password):
        user = FrontUser(telephone=telephone, username=username, password=password)
        db.session.add(user)
        db.session.commit()
        print( '成功创建前台用户:{}'.format(username))
    
    ...

    创建一个前台用户

    查看数据库

  • 相关阅读:
    7月24日学习
    7月23日学习
    7月22日学习
    7月21日学习
    【编程技巧】applicationContext.xml 里面可配置bean和数据库地址
    【编程技巧】 输入框只能输入中文
    【开发技术】Beyond Compare
    【编程技巧】Ext.QuickTips.init();
    【开发技术】常用正则表达式大全!(例如:匹配中文、匹配html)
    【编程技巧】addSubview和insertSubview的区别
  • 原文地址:https://www.cnblogs.com/sellsa/p/9489226.html
Copyright © 2011-2022 走看看