收藏电影接口实现
本节课我们来实现收藏电影的后端接口。
1. 创建Collects路由
在后端项目的URLs.py文件中注册Collects路由,并将其与CollectViewSet视图集关联。
from account import views as accout_views
router = DefaultRouter()
router.register(r'movie', views.MovieViewSet)
router.register(r'category', views.CategoryViewSet)
router.register(r'collects', accout_views.CollectViewSet, 'collect')
2. 创建CollectViewSet视图集
在Account应用的views.py文件中,创建CollectViewSet视图集,并继承Rest Framework的ModelViewSet类。 关键代码如下:
from rest_framework.response import Response
from account.models import Profile
from django.core.exceptions import ObjectDoesNotExist
class CollectViewSet(viewsets.ModelViewSet):
queryset = Movie.objects.all()
serializer_class = MovieSerializer
def list(self, request):
pass
def create(self, request):
user = request.user
profile = Profile.objects.get(user=user)
movie_id = request.data['movie_id']
try:
movie = Movie.objects.get(id=movie_id)
profile.movies.add(movie)
return Response({
'status_code': 0,
'message': '收藏成功'
})
except ObjectDoesNotExist:
return Response({
'message': '电影信息不存在'
})
except:
return Response({
'message': '收藏失败'
})
def destroy(self, request):
pass
3. 测试收藏电影接口
使用Postman测试收藏电影接口:
- 请求方法:POST
- URL:http://localhost:8000/api/collects/
- 请求体(Body):
movie_id参数表示要收藏的电影ID
注意,要在请求的Header中添加Authorization参数,并携带有效的JWT token。
如果成功收藏电影,将返回以下响应:
{
"message": "收藏成功"
}
使用postman发送接口请求,如下图所示。

出现上面错误是因为没有写到用户登录成功后的token。也就是说,只有登录成功的用户才能使用收藏功能。

如果电影信息不存在,将返回以下响应:
{
"message": "电影信息不存在"
}

收藏成功后,查看profile_movie表,新增了一条记录,如下图所示。

至此,收藏电影接口的实现完成。
【大熊课堂精品课程】
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