美文网首页
django-restful:用户操作 学习记录

django-restful:用户操作 学习记录

作者: 你常不走的路 | 来源:发表于2018-01-10 20:35 被阅读218次

本块 学习的 用户操作包括 用户收藏 用户地址填写 用户留言

用户收藏 包括了 list create delete retrieve 基本功能 都包含了

views 这里面 我基本写的比较明白了

class UserFavViewset(mixins.CreateModelMixin, mixins.ListModelMixin, mixins.RetrieveModelMixin,
                     mixins.DestroyModelMixin, viewsets.GenericViewSet):
    """
    list:
        获取用户收藏列表
    retrieve:
        判断某个商品是否已经收藏
    create:
        收藏商品
    """
    # 不能获取全部
    # queryset = UserFav.objects.all()
    # IsAuthenticated 验证用户是否登录 IsOwnerOrReadOnly 用户只能操作属于自己的东西
    permission_classes = (IsAuthenticated, IsOwnerOrReadOnly)
    # serializer_class = UserFavSerializer
    authentication_classes = (JSONWebTokenAuthentication, SessionAuthentication)
    lookup_field = 'goods_id'  # 以前是搜索的数据表本身id 这里就是使用goods_id进行搜索 不用数据表id

    def get_queryset(self):
        # 获取属于用户的收藏list
        return UserFav.objects.filter(user=self.request.user)

    def get_serializer_class(self):   #动态设置 serializer 前面讲过了
        if self.action == 'list':
            return UserFavDetailserializer  # 个人中心
        elif self.action == 'create':
            return UserFavSerializer  # 收藏功能
        return UserFavSerializer

serializer

# 个人中心商品收藏
class UserFavDetailserializer(serializers.ModelSerializer):
    goods = GoodsSerializer()  # 获取goods商品的详情

    class Meta:
        model = UserFav
        fields = ['goods', 'id']


# 商品详情页收藏功能
class UserFavSerializer(serializers.ModelSerializer):
    # 获取当前用户 如果不定义 直接用user字段 就会把所有用户都取出来
    user = serializers.HiddenField(
        default=serializers.CurrentUserDefault()
    )

    class Meta:
        model = UserFav
        # 唯一集合  所以不能多选  model 和serializer 只用配置一个
        validators = [
            UniqueTogetherValidator(
                queryset=UserFav.objects.all(),
                fields=('user', 'goods'),
                message="已经收藏"
            )
        ]
        fields = ['user', 'goods', 'id']

基本都差不多

所以我就不把 用户留言和 用户地址 放上来了

read_only 只返回不提交

write_only 只提交不返回

相关文章

网友评论

      本文标题:django-restful:用户操作 学习记录

      本文链接:https://www.haomeiwen.com/subject/eakanxtx.html