上一篇运行项目后就会创建两个表 现在就可以使用flask路由来尝试些接口 并做一个让前端页面请求获取数据渲染出来可以编辑歌曲 添加歌手 删除等等一个简单的demo
紧接继续写上代码
#拉取全部的歌手列表
@app.route('/getMusic', methods=['GET'])
@cross_origin()
def getMusic():
singers = Singer.query.all() #xxx.query.all() 返回表里的全部数据
data = []
for v in singers:
data.append(v.to_json()) # to_json方法在上一篇定义了该方法,因为之前有反向引用 所以在拿到belong_to的属性并且引用了Song类
return jsonify({'code': 200, 'success': True, 'data': data}) #flask jsonify转换为json格式返回
#添加歌手列表
@app.route('/addmusic', methods=['POST'])
@cross_origin()
def addMusic():
'''
既然要添加 那肯定是获取前端传过来的值 定义两个key来获取
添加之前肯定要查询一遍是不是重复的歌手 因为歌手名的字段之前的unique = true是不能重复的
不是重复的就是添加 重复的话就只能添加歌曲名
'''
song_name = request.form.get('name')
singer = request.form.get('author')
isSinger = Singer.query.filter_by(name=singer).first() #条件查询是否有该歌手
if isSinger is not None:
song = Song(song_name, isSinger.id) #存在 就添加歌曲 把已存在的歌手id传进去
db.session.add(song)
db.session.commit()
else:
# 先添加歌手
music = Singer(singer)
db.session.add(music)
db.session.commit()
# 再添加歌曲 在把新的歌手ID加上
song = Song(song_name, music.id)
db.session.add(song)
db.session.commit()
return jsonify({'code': 200, 'success': True, 'data': '歌曲添加成功'})
#编辑歌曲
@app.route('/editMusic', methods=['POST'])
@cross_origin()
def editMusic():
#编辑歌曲 最基本两个参数就是 新的歌曲名词 和歌曲id
song_name = request.form.get('name')
id = request.form.get('id')
res = Song.query.filter_by(id=id).first()
res.name = song_name #赋值就直接修改了 在执行一次提交ok
db.session.commit()
return jsonify({'code': 200, 'success': True, 'data': '歌曲修改成功'})
#删除歌曲
@app.route('/delMusic/<id>', methods=['GET']) # <id> 获取动态参数
@cross_origin()
def delMusic(id):
res = Song.query.filter_by(id=id).first()
db.session.delete(res)
db.session.commit()
return jsonify({'code': 200, 'success': True, 'data': '歌曲删除成功'})
#删除歌手
@app.route('/delSinger/<id>', methods=['GET']) #<id>歌手id
@cross_origin()
def delSinger(id):
res = Singer.query.filter_by(id=id).first()
db.session.delete(res)
db.session.commit()
return jsonify({'code': 200, 'success': True, 'data': '歌手删除成功'})
还有一些异常捕获的处理没有写 反正就是一个demo 轮到前端部分咯