数据库信息

DEBUG = True
SQLALCHEMY_DATABASE_URI = 'mysql+pymysql://root:123456@127.0.0.1:3306/test'
SQLALCHEMY_TRACK_MODIFICATIONS = False

from flask_sqlalchemy import SQLAlchemy
db = SQLAlchemy()

from datetime import datetime
from exts import db class CMSUser(db.Model):
__tablename__ = 'cms_user'
id = db.Column(db.Integer, primary_key=True, autoincrement=True)
username = db.Column(db.String(50), nullable=False, comment='用户名')
password = db.Column(db.String(50), nullable=False, comment='密码')
email = db.Column(db.String(50), nullable=False, unique=True, comment='邮箱,唯一')
join_time = db.Column(db.DateTime, default=datetime.now, comment='加入时间')

from flask_script import Manager
from flask_migrate import Migrate, MigrateCommand
from cms import app
from exts import db
from apps.cms import models manager = Manager(app) Migrate(app, db)
manager.add_command('db', MigrateCommand) if __name__ == '__main__':
manager.run()

python manager.py db init
python manager.py db migrate
python manager.py db upgrade

from flask import Flask
from apps.cms import bp as cms_bp
from apps.common import bp as common_bp
from apps.front import bp as front_bp
import config
from exts import db def create_app():
app = Flask(__name__)
app.config.from_object(config) app.register_blueprint(cms_bp)
app.register_blueprint(common_bp)
app.register_blueprint(front_bp) db.init_app(app)
return app if __name__ == '__main__':
app = create_app()
app.run(host='0.0.0.0', port=8888)

from flask_script import Manager
from flask_migrate import Migrate, MigrateCommand
from cms import create_app
from exts import db
from apps.cms import models as cms_models CMSUser = cms_models.CMSUser app = create_app() manager = Manager(app) Migrate(app, db)
manager.add_command('db', MigrateCommand) # 命令行添加用户
@manager.option('-u', '--username', dest='username')
@manager.option('-p', '--password', dest='password')
@manager.option('-e', '--email', dest='email')
def create_cms_user(username, password, email):
user = CMSUser(username=username, password=password, email=email)
db.session.add(user)
db.session.commit() if __name__ == '__main__':
manager.run()

插入用户:python manager.py create_cms_user -u user1 -p 123456 -e 123@qq.com

密码加密

from datetime import datetime
from exts import db
from werkzeug.security import generate_password_hash, check_password_hash class CMSUser(db.Model):
__tablename__ = 'cms_user'
id = db.Column(db.Integer, primary_key=True, autoincrement=True)
username = db.Column(db.String(50), nullable=False, comment='用户名')
_password = db.Column(db.String(100), nullable=False, comment='密码')
email = db.Column(db.String(50), nullable=False, unique=True, comment='邮箱,唯一')
join_time = db.Column(db.DateTime, default=datetime.now, comment='加入时间') def __init__(self, username, password, email):
self.username = username
self.password = password
self.email = email # 密码:对外的字段名:password、对内的字段名:__password
@property
def password(self):
""" 获取密码 """
return self._password @password.setter
def password(self, row):
""" 设置加密密码 """
self._password = generate_password_hash(row) def check_password(self, row):
""" 检查密码 """
return check_password_hash(self.password, row)

由于修改了字段名,这里执行数据库迁移

添加用户:python manager.py create_cms_user -u user1 -p 123456 -e 122@qq.com

九十一:CMS系统之cms用户模型定义的更多相关文章

  1. 一百一十二:CMS系统之前台用户模型

    安装shortuuid用于前台用户的主键:pip install shortuuid 创建模型 from datetime import datetimeimport enumfrom werkzeu ...

  2. 26、Flask实战第26天:cms用户模型定义

    编辑cms.models.py from exts import db from datetime import datetime class CMSUser(db.Model): __tablena ...

  3. 九十三:CMS系统之cms后台登录功能

    config form from wtforms import Form, StringField, IntegerFieldfrom wtforms.validators import Email, ...

  4. Django自定义用户认证系统之自定义用户模型

    参考文档:http://python.usyiyi.cn/django/topics/auth/customizing.html Django 自带的认证系统足够应付大多数情况,但你或许不打算使用现成 ...

  5. 九十四:CMS系统之cms后台登录限制

    装饰器,验证当前session中是否存在定义的user_id,没有就重定向到登录页 from flask import session, redirect, url_forfrom functools ...

  6. 九十二:CMS系统之cms后台登录界面

    html <!DOCTYPE html><html lang="zh-CN"> <head> <meta charset="ut ...

  7. 一百零七:CMS系统之权限和角色模型定义

    模型与权限关系映射表 class CMSPersmission: """ 权限管理映射 """ # 255的二进制方式来表示 1111 11 ...

  8. 九十六:CMS系统之cms后台用户名渲染和注销功能

    用户名渲染,使用flask的g对象,在用户请求进来之后,触发视图函数之前,拿用户的信息,放到g对象里面 @bp.before_requestdef before_request(): "&q ...

  9. 九十五:CMS系统之cms后台模板渲染

    定义一个宏,用于渲染static文件的时候,只需要传文件名就可以,上下两个“-”是解决渲染的时候源代码换行的情况 {% macro static(filename) -%} {{ url_for('s ...

随机推荐

  1. shell脚本编程进阶及RAID和LVM应用1

    bash脚本编程 脚本文件格式: 第一行,顶格写: #!/bin/bash 注释行:#开头 代码注释:写清楚注释 规范写脚本:适度缩进,添加空白行 编程语言:有编程语法格式,库,算法和数据结构 编程思 ...

  2. 7.caffe:create_lmdb.sh(数据预处理转换成lmdb格式)

    个人实践代码如下: #!/usr/bin/env sh # Create the imagenet lmdb inputs # N.B. set the path to the imagenet tr ...

  3. python再学习笔记

    python各种半桶水QAQ,一些特性经常跟其他语言搞混,官方入门文档重读温习...... 最好用4个空格的缩进空值是Python里一个特殊的值,用None表示变量就是在程序中用来指向这些数据对象的, ...

  4. redis四种部署方式

    1.单点 2.主从 3.哨兵 4.集群

  5. CSS效果篇--纯CSS+HTML实现checkbox的思路与实例

    checkbox应该是一个比较常用的html功能了,不过浏览器自带的checkbox往往样式不怎么好看,而且不同浏览器效果也不一样.出于美化和统一视觉效果的需求,checkbox的自定义就被提出来了. ...

  6. MySQL主从同步、读写分离配置步骤、问题解决笔记

    MySQL主从同步.读写分离配置步骤.问题解决笔记 根据要求配置MySQL主从备份.读写分离,结合网上的文档,对搭建的步骤和出现的问题以及解决的过程做了如下笔记:       现在使用的两台服务器已经 ...

  7. python 中的匿名函数lamda和functools模块

    为什么 要把匿名函数和functools模块写在一起? 因为 lamda函数和functools模块都是对函数一种增强或者是简化. 匿名函数: 为了解决那些功能很简单的需求而设计一次性的需求函数 #& ...

  8. 题解 [BZOJ4144] Petrol

    题目描述 ​ 有一张 n 个点 m 条边的无向图,其中有 s 个点上有加油站.有 Q 次询问(a,b,c), 问能否开一辆油箱容积为 c 的车从 a 走到 b.(a,b均为加油站) 输入格式 ​ 第一 ...

  9. 【Wince-USB通讯】Wince在没有Wifi的情况下使用USB数据线与PC进行Socket通讯

    具体操作 1.确保Wince连接PC成功 2.服务端的IP输入:127.0.0.1 ,然后启动侦听. 3.在客户端输入的服务器IP是:192.168.55.100 (客户端的IP是192.168.55 ...

  10. kubernetes将集群外部流量引入集群内

    一.service:pod是有生命周期的,我们想给客户一个固定的访问端点,在客户端与服务端之间启动一个固定的中间层,依赖于kubernetes的一个附件CoreDns.kubernetes有三类网路地 ...