zoukankan      html  css  js  c++  java
  • DRF用户收藏接口实现

    1)序列化

    user_operation/serializers.py

    from rest_framework import serializers
    from rest_framework.validators import UniqueTogetherValidator
    from .models import UserFav
    
    
    class UserFvaSerializers(serializers.ModelSerializer):
        """
        用户收藏
        """
        user = serializers.HiddenField(default=serializers.CurrentUserDefault())
        # validate实现唯一联合,一个商品只能收藏一次
        validators = [
            UniqueTogetherValidator(queryset=UserFav.objects.all(), fields=('user', 'goods'), message='已经收藏')
        ]
    
        class Meta:
            model = UserFav
            fields = ['user', 'goods', 'id']

    二、user_operation/views.py

    from rest_framework import viewsets, mixins
    from .serializers import UserFvaSerializers
    from .models import UserFav
    
    
    class UserFvaViewSet(viewsets.GenericViewSet, mixins.ListModelMixin, mixins.CreateModelMixin, mixins.DestroyModelMixin):
        """
        用户收藏
        """
        queryset = UserFav.objects.all()
        serializer_class = UserFvaSerializers

    说明:继承的类

    •  mixins.CreateModelMixin         添加收藏(相当于创建数据库)
    •  mixins.DestroyModelMixin       取消删除(相当于数据库删除)
    •  mixins.ListModelMixin             获取已收藏的商品列表

     (3)配置url

    router.register(r'userfavs', UserFavViewset, base_name="userfavs")

    三、测试

    发送收藏请求

    查看收藏列表

    重复收藏提示已经收藏

  • 相关阅读:
    绝对定位和相对定位的内幕
    水平居中和垂直居中
    玩转html5<canvas>画图
    基本排序算法
    很好用的canvas
    IE浏览器存在的setAttribute bug
    js 高程 函数节流 throttle() 分析与优化
    js apply()、call() 使用参考
    js 高程 22.1.4 函数绑定 bind() 封装分析
    事件处理程序中 this 的指向
  • 原文地址:https://www.cnblogs.com/mxsf/p/10681271.html
Copyright © 2011-2022 走看看