概述
编写模型类
在models目录中的model.py文件中
from flask_sqlalchemy import SQLAlchemy
db=SQLAlchemy()
分类表
class Classify(db.Model):
id=db.Column(db.Integer,primary_key=True,autoincrement=True,comment='ID')
name=db.Column(db.String(32),default='',comment='分类名称')
mcd=db.relationship('Mcd',backref='classify')
#外键绑定
#服装表
class Mcd(db.Model):
id=db.Column(db.Integer,primary_key=True,autoincrement=True,comment='ID')
name=db.Column(db.String(32),comment='商品名')
price=db.Column(db.DECIMAL(10,2),comment='价格')
img=db.Column(db.String(500),comment='图片地址')
classify_id=db.Column(db.Integer,db.ForeignKey('classify.id'))
进行迁移
# 初始化迁移文件 # 初始化,只需要初始化一次
python manage.py db init
# 生成迁移文件
python manage.py db migrate
# 执行迁移
python manage.py db upgrade
# 迁移完成
在蓝图中进行编写接口
from flask import Blueprint,jsonify,request
from flask_restful import Api,Resource,marshal,fields,reqparse #导入序列化器数据请求等
from models.mobel import Press,Sort,db #将model中的导包过来
news_dp=Blueprint('news_dp',__name__,url_prefix='/news')
api=Api(news_dp) #实例化蓝图
#分类表的增删改查
class Sortview(Resource):
def post(self): #添加数据
rep=reqparse.RequestParser()
rep.add_argument('name')
args=rep.parse_args()
s1=Sort(name=args['name'])
db.session.add(s1)
db.session.commit()
return jsonify({
'code':200,
'msg':'添加成功'
})
def get(self): #获取全部数据
sort_info=Sort.query.all()
slist=marshal(sort_info,{
'id':fields.Integer,
'name':fields.String
})
return jsonify({
'code':200,
'msg':'获取成功',
'data':slist
})
def put(self):
rep=reqparse.RequestParser()
rep.add_argument('id')
rep.add_argument('name')
args=rep.parse_args() #根据id进行修改
sort_data=Sort.query.filter(Sort.id==args['id']).first()
if not sort_data:
return jsonify({
'code':400,
'msg':'数据不存在'
})
sort_data.name=args['name']
db.session.commit()
return jsonify({
'code':200,
'msg':'修改成功'
})
def delete(self): #删除数据
rep=reqparse.RequestParser()
rep.add_argument('id')
args=rep.parse_args()
Sort.query.filter(Sort.id==args['id']).delete()
db.session.commit()
return jsonify({
'code':200,
'msg':'删除成功'
})
#服装表的曾删改查
class PressView(Resource):
def post(self):
rep=reqparse.RequestParser()
rep.add_argument('desc',type=str,required=True)
rep.add_argument('media',type=str,required=True)
rep.add_argument('comm',type=str,required=True)
rep.add_argument('img',type=str,required=True)
rep.add_argument('sort_id',type=int,required=True)
args=rep.parse_args()
p1=Press(
desc=args['desc'],
media=args['media'],
comm=args['comm'],
img=args['img'],
sort_id=args['sort_id'],
)
#添加数据
db.session.add(p1)
db.session.commit()
return jsonify({
'code':200,
'msg':'添加成功'
})
def get(self):
rep=reqparse.RequestParser()
rep.add_argument('id')
args=rep.parse_args() #根据绑定的id查询所有的数据
pre_info=Press.query.filter(Press.sort_id==args['id']).all()
if not pre_info:
return jsonify({
'code':200,
'msg':'没有该分类'
})
plist=marshal(pre_info,{
'desc':fields.String,
'media':fields.String,
'comm':fields.String,
'img':fields.String,
})
return jsonify({
'code':200,
'msg':'获取成功',
'data':plist
})
def put(self):
rep = reqparse.RequestParser()
rep.add_argument('id',type=int)
rep.add_argument('desc', type=str)
rep.add_argument('media', type=str)
rep.add_argument('comm', type=str)
rep.add_argument('img', type=str)
rep.add_argument('sort_id', type=int)
args = rep.parse_args() #获取到需要修改的数据
pre_info=Press.query.filter(Press.id==args['id']).first()
if not pre_info:
return jsonify({
'code':400,
'msg':'数据不存在'
})
if args['desc']: #判断哪些数据需要修改哪些数据不用修改
pre_info.desc=args['desc']
if args['media']:
pre_info.media=args['media']
if args['comm']:
pre_info.comm=args['comm']
if args['img']:
pre_info.img=args['img']
if args['sort_id'] is not None:
pre_info.sort_id=args['sort_id']
db.session.commit()
return jsonify({
'code':200,
'msg':'修改成功'
})
def delete(self):
rep=reqparse.RequestParser()
rep.add_argument('id')
args=rep.parse_args() #根据id删除对应的数据
Press.query.filter(Press.id==args['id']).delete()
db.session.commit()
return jsonify({
'code':200,
'msg':'删除成功'
})
api.add_resource(Sortview,'/cls')
api.add_resource(PressView,'/pre')
在crete_app中进行注册
from flask import Flask
from flask_cors import CORS #跨域
from views.news import news_dp #导入实例化的蓝图
from models.mobel import db #导入数据库 db
def create_app(config):
flack_app=Flask(__name__)
#加载配置项
flack_app.config.from_object(config)
#注册蓝图
flack_app.register_blueprint(news_dp)
#绑定db
db.init_app(flack_app)
#跨域
CORS(flack_app)
return flack_app
最后
以上就是成就柠檬为你收集整理的Day7 --- 前后端分离与接口编写 一对多增删改查的全部内容,希望文章能够帮你解决Day7 --- 前后端分离与接口编写 一对多增删改查所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复