Vue + drf 打造前后端分离的生鲜电商平台 —— 周报 6

本文详细介绍了使用Django REST framework和Vue.js进行前后端分离开发的过程,包括商品详情页、热卖商品接口、用户收藏功能的实现,以及权限验证、错误日志监控等关键环节。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

		                    ——————  学习周报 2019.2.24


在这里插入图片描述

掌握的技术:
  • Vue + Django REST framework 前后端分离技术
  • restful api 开发流程
  • Django REST framework 的功能实现和核心源码分析
  • Sentry 完成线上系统的错误日志的监控和警告
  • 第三方登录和支付宝支付的集成
  • 本地调试远程服务器代码技巧


完成情况:

一、课程计划
  • 商品详情页功能
  • viewsets实现商品详情页接口
  • 热卖商品接口实现
  • 用户收藏接口实现
  • drf 的权限验证
  • 用户收藏功能和vue联调
二、拓展知识计划
  • 高级模板技术
  • Django模型的高级用法
  • 通用视图


笔记:

1、viewsets实现商品详情页接口

  • 仅仅需要在apps / goods / views.py 下对类class GoodsListViewset(mixins.ListModelMixin, viewsets.GenericViewSet):进行操作,改为class GoodsListViewset(mixins.ListModelMixin, mixins.RetrieveModelMixin, viewsets.GenericViewSet):即可实现商品详情页。
  • 在 goods / Serializer中嵌套 Serializer :
class GoodsImageSerializer(serializers.ModelSerializer):
    class Meta:
        model = GoodsImage
        fields = ("image", )


class GoodsSerializer(serializers.ModelSerializer):
    category = CategorySerializer()
    images = GoodsImageSerializer(many=True)
    
    class Meta:
        model = Goods
        fields = "__all__"
  • image、价格之类的信息全部显示:
    在这里插入图片描述
    在这里插入图片描述

2、热卖商品接口实现

  • 在商品的过滤类中增加一个"is_hot"即可实现。
    在这里插入图片描述
    在这里插入图片描述

3、用户收藏接口实现

  • 在apps / user_operation / views.py 下新建class UserFavViewset(mixins.CreateModelMixin, mixins.DestroyModelMixin, viewsets.GenericViewSet):
class UserFavViewset(mixins.CreateModelMixin, mixins.DestroyModelMixin, viewsets.GenericViewSet):
    """
用户收藏功能
    """
    queryset = UserFav.objects.all()
    serializer_class = UserFavSerializer
class UserFavSerializer(serializers.ModelSerializer):
    user = serializers.HiddenField(
        default=serializers.CurrentUserDefault()  # 获取到当前用户
    )

    class Meta:
        model = UserFav
        validators = [
            UniqueTogetherValidator(
                queryset=UserFav.objects.all(),
                fields=('user', 'goods'),
                message="已经收藏"
            )
        ]

        fields = ("user", "goods", "id")

4、drf 的权限验证

# -*- coding: utf-8 -*-
from rest_framework import permissions


class IsOwnerOrReadOnly(permissions.BasePermission):
    """
    Object-level permission to only allow owners of an object to edit it.
    Assumes the model instance has an `owner` attribute.
    """

    def has_object_permission(self, request, view, obj):
        # Read permissions are allowed to any request,
        # so we'll always allow GET, HEAD or OPTIONS requests.
        if request.method in permissions.SAFE_METHODS:
            return True

        # Instance must have an attribute named `owner`.
        return obj.user == request.user
  • 对apps / user_operation / views.pyclass UserFavViewset(mixins.CreateModelMixin, mixins.DestroyModelMixin, viewsets.GenericViewSet):进行修改,增加权限验证:
class UserFavViewset(mixins.CreateModelMixin,  mixins.ListModelMixin, mixins.DestroyModelMixin, viewsets.GenericViewSet):
    """
用户收藏功能
    """
    permission_classes = (IsAuthenticated, IsOwnerOrReadOnly)
    serializer_class = UserFavSerializer
    authentication_classes = (JSONWebTokenAuthentication, SessionAuthentication)

    def get_queryset(self):
        return UserFav.objects.filter(user=self.request.user)

5、用户收藏功能和vue联调

  • 结合前端,对apps / user_operation / views.py 下的class UserFavViewset(mixins.CreateModelMixin, mixins.DestroyModelMixin, viewsets.GenericViewSet):进行修改,设置lookup_field = "goods_id" ;设置根据goods_id进行导入。

  • 前端页面点击“收藏”进行测试:
    在这里插入图片描述

  • 后台数据库信息:
    在这里插入图片描述



下周计划:

一、课程计划
  • 个人中心功能开发
  • drf 的api文档自动生成和功能详解
  • 动态设置serializer和permission获取用户信息
  • vue和用户接口信息联调
  • 用户个人信息修改
  • 用户收藏功能
二、拓展知识计划
  • Django REST framework 文档学习
  • Git深入学习
  • 在Django中验证用户的身份
  • 测试Django应用程序
  • 部署Django应用程序
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值