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))
    
    ...

    创建一个前台用户

    查看数据库

  • 相关阅读:
    win7网络共享原来如此简单,WiFi共享精灵开启半天都弱爆了!
    JQUERY UI Datepicker Demo
    Official online document, install svn server in centOS
    JAVE not work in linux
    AMR 转mp3 失败
    XD, XR, DR 股票
    Linux 下MySql 重置密码
    Difinition Of Done
    Apache, Tomcat, JK Configuration Example
    Linux 安装tomcat
  • 原文地址:https://www.cnblogs.com/sellsa/p/9489226.html
Copyright © 2011-2022 走看看