取消收藏和收藏列表接口实现
本文介绍了如何实现取消收藏和收藏列表接口的功能。
取消收藏接口
为了实现取消收藏功能,我们需要获取用户的相关信息,并根据接口规则在URL中追加一个数字来表示要取消收藏的电影ID。
具体实现过程如下:
-
在接收请求时,通过URL中追加的数字获取电影ID,将其赋值给变量PK(Primary Key)。
-
使用获取到的PK作为条件,从数据库中获取要取消收藏的电影。
-
如果电影存在,则将其从用户的收藏列表中移除,并返回取消收藏成功的消息。
-
如果电影不存在,则返回电影信息不存在的错误消息。
-
如果出现其他情况导致取消电影失败,则返回取消电影失败的错误消息。
dx_movie/account/views.py
def destroy(self, request, pk):
user = request.user
profile = Profile.objects.get(user=user)
try:
movie = Movie.objects.get(id=pk)
if movie not in profile.movies.all():
return Response({'message': '未收藏该电影'})
profile.movies.remove(movie)
return Response({'message': '取消收藏成功'})
except ObjectDoesNotExist:
return Response('message': '电影信息不存在')
except:
return Response({'message': '取消收藏失败'})
代码解析
- 先获取用户信息
- 判断电影id是否已经在收藏列表中,这里通过profile.movies.all()来获取所有收藏的电影id。如果不存在,则提示
未收藏该电影 - 如果该电影在收藏列表,则使用profile.movies.remove()删除电影
- 如果电影id不存在,则提示
电影信息不存在 - 否则提示
取消收藏失败
测试取消收藏电影接口
使用Postman测试取消收藏电影接口:
继续阅读完整内容
以上为免费预览。前往「Django + Vue 全栈课程」,查看后续完整讲解、案例演示和配套资料。
查看课程详情