1.概述
通过项目需求,可以分析出菜单model的可以设计的字段与内容
2.创建model利用migrate映射mysql数据库
2.1代码展示
# /flask_shop/models.py
# 此文件用于建立数据库表的模型
# 需要针对数据库的模型
from enum import unique
from flask_shop import db
# 对数据加密 检查密码
from werkzeug.security import generate_password_hash,check_password_hash
from datetime import datetime
# 角色管理
class Role(db.Model):
__tablename__ = 't_role'
id = db.Column(db.Integer, primary_key = True)
name = db.Column(db.String(32), unique=True, nullable = True)
desc = db.Column(db.String(32))
# users = db.Column('User', backref='role')
# menu = db.Column('Menu', secondary = trm)
def to_dict(self):
return {
'id':self.id,
'name': self.name,
'desc':self.desc
}
2.2测试
具体步骤可以参考我的flask专栏,或者本专栏前几节,里面有专门讲解的
3.创建蓝图对象
# flask_shop/role/__init__.py
# user用于管理用户的蓝图
from flask import Blueprint
# 注册flask_restful路由
from flask_restful import Api
# 创建蓝图,记得要注册
#定义好传递给的变量 蓝图对象名称 前缀名
role = Blueprint('role', __name__)
# 注册flask_restful路由
role_api = Api(role)
from flask_shop.role import view
4.编写函数
4.1编写获取数据库中的列表接口,并添加映射
# flask_shop/role/view.py
from flask import request
from flask_shop.role import role,role_api
from flask_shop import models,db
from flask_restful import Resource
from flask_shop.utils.message import to_dict_msg
class Role(Resource):
def get(self):
role_list = []
try:
roles = models.Role.query.all()
role_list = [r.to_dict() for r in roles]
return to_dict_msg(200, role_list, '获取角色列表成功')
except Exception as e:
return to_dict_msg(20000)
role_api.add_resource(Role, '/role')
4.2注册路由地址
#flask_shop/__init__.py
# 用于初始化app对象
from flask import Flask
# 导入数据库
from flask_sqlalchemy import SQLAlchemy
# 获取是哪种开发模式
from config import config_map
# 先不连接app对象,否则报错,在下面创建app对象时默认连接数据库,就可以了
db = SQLAlchemy()
def create_app(config_name):
app = Flask(__name__)
# 获取到字典中的哪种类,获取到对应的类名,再给到from_object获取到对应的参数
obj = config_map.get(config_name)
# 加载数据库到Flask中
app.config.from_object(obj)
# 默认连接数据库
db.init_app(app)
# 注册用户的蓝图
# 不可以把这一行放到开头,否则会执行回init,再引用回来会需要创建db,产生报错
from flask_shop.user import user
app.register_blueprint(user)
from flask_shop.menu import menu
app.register_blueprint(menu)
from flask_shop.role import role
app.register_blueprint(role)
return app