取消收藏和收藏列表接口实现
本文介绍了如何实现取消收藏和收藏列表接口的功能。
取消收藏接口
为了实现取消收藏功能,我们需要获取用户的相关信息,并根据接口规则在URL中追加一个数字来表示要取消收藏的电影ID。
具体实现过程如下:
-
在接收请求时,通过URL中追加的数字获取电影ID,将其赋值给变量PK(Primary Key)。
-
使用获取到的PK作为条件,从数据库中获取要取消收藏的电影。
-
如果电影存在,则将其从用户的收藏列表中移除,并返回取消收藏成功的消息。
-
如果电影不存在,则返回电影信息不存在的错误消息。
-
如果出现其他情况导致取消电影失败,则返回取消电影失败的错误消息。
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测试取消收藏电影接口:
- 请求方法:DELETE
- URL:http://localhost:8000/api/collects/9/
- URL最后有一个"/"
- 请求的Header中需要添加
Authorization参数,并携带有效的JWT token。
取消收藏成功效果如下图所示。

删除后,查看数据库中的profile_movie表,该数据已经被删除。如下图所示。

收藏列表接口
收藏列表接口用于展示用户收藏的所有电影信息。
具体实现过程如下:
-
获取用户的相关信息。
-
通过用户的收藏列表获取所有的电影信息,并赋值给变量Movies。
-
使用序列化器(Serializer)将Movies序列化为数据。
-
返回序列化后的数据作为响应,展示用户收藏的所有电影。
list方法代码如下:
def list(self, request):
user = request.user
profile = Profile.objects.get(user=user)
movies = profile.movies.all()
serializer = MovieSerializer(movies, many=True)
return Response(serializer.data)
测试收藏电影列表接口
以上就是取消收藏和收藏列表接口的实现。通过这些接口,用户可以方便地管理自己的收藏电影列表。
使用Postman测试取消收藏电影接口:
- 请求方法:GET
- URL:http://localhost:8000/api/collects/
- 请求的Header中需要添加
Authorization参数,并携带有效的JWT token。
收藏接口如下图所示。

【大熊课堂精品课程】
Python零基础入门动画课: https://www.bilibili.com/cheese/play/ss7988
Django+Vue:全栈开发: https://www.bilibili.com/cheese/play/ss8134
PyQT6开发桌面软件: https://www.bilibili.com/cheese/play/ss12314
Python办公自动化: https://www.bilibili.com/cheese/play/ss14990
Cursor AI编程+MCP:零基础实战项目课: https://www.bilibili.com/cheese/play/ss105194189
Pandas数据分析实战: https://www.bilibili.com/cheese/play/ss734522035
AI大模型+Python小白应用实战: https://www.bilibili.com/cheese/play/ss3844