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")

    三、测试

    发送收藏请求

    查看收藏列表

    重复收藏提示已经收藏

  • 相关阅读:
    敌兵布阵(线段树单点更新+区间查询)
    小明上学(CCF认证2018-12-1 )
    There Are Two Types Of Burgers (Educational Codeforces Round 71)
    Bad Prices ( Codeforces Round #582 )
    Redis热点key优化
    Redis big key处理
    Redis的安全问题
    Redis的flushall/flushdb误操作
    Redis在linux系统中的优化
    Redis之缓存设计
  • 原文地址:https://www.cnblogs.com/mxsf/p/10681271.html
Copyright © 2011-2022 走看看