安裝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)) ...
創建一個前台用戶
查看數據庫