Skip to main content

收藏电影接口实现

本节课我们来实现收藏电影的后端接口。

1. 创建Collects路由

在后端项目的URLs.py文件中注册Collects路由,并将其与CollectViewSet视图集关联。

dx_movie/dx_movie/urls.py
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类。 关键代码如下:

dx_movie/account/views.py
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测试收藏电影接口:

注意,要在请求的Header中添加Authorization参数,并携带有效的JWT token。

如果成功收藏电影,将返回以下响应:

{
"message": "收藏成功"
}

使用postman发送接口请求,如下图所示。

图51-没有token请求收藏接口

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

图51-收藏成功

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

{
"message": "电影信息不存在"
}

图51-收藏的电影信息不存在

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

图51-收藏成功后表变化

至此,收藏电影接口的实现完成。