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

本文分享了使用Vue和DjangoRESTframework实现前后端分离项目的实践经验,包括restful API开发、错误日志监控、第三方登录集成及商品展示功能的具体实现。

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

		                    ——————  学习周报 2019.2.3


在这里插入图片描述

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


完成情况:

  • “ 商品类别数据和vue展示” 功能
    • 商品类别数据接口
    • vue 展示商品分类数据
    • vue 展示商品列表页数据
    • vue 的商品搜索功能


笔记:

1、商品类别数据接口

class CategoryViewset(mixins.ListModelMixin, viewsets.GenericViewSet):
    """
    list:
        商品分类列表数据
    """
    queryset = GoodsCategory.objects.filter(category_type=1)
    serializer_class = CategorySerializer**
  • 配置url:Category
    在这里插入图片描述
  • 二类:在apps / goods / Serializer.py嵌套:
class CategorySerializer2(serializers.ModelSerializer):
    class Meta:
        model = GoodsCategory
        fields = "__all__"


class CategorySerializer(serializers.ModelSerializer):
    sub_cat = CategorySerializer2(many=True)

    class Meta:
        model = GoodsCategory
        fields = "__all__"

注意:many=True

  • 三类: 在apps / goods / Serializer.py再嵌套:
class CategorySerializer3(serializers.ModelSerializer):
    class Meta:
        model = GoodsCategory
        fields = "__all__"


class CategorySerializer2(serializers.ModelSerializer):
    sub_cat = CategorySerializer3(many=True)
    class Meta:
        model = GoodsCategory
        fields = "__all__"


class CategorySerializer(serializers.ModelSerializer):
    sub_cat = CategorySerializer2(many=True)

    class Meta:
        model = GoodsCategory
        fields = "__all__"
  • 详情信息显示,只需要在 CategoryViewset()中增加: mixins.RetrieveModelMixin
  • 在浏览器后面增加id就可以访问:
    在这里插入图片描述

2、vue 展示商品分类数据

  • 逐个接口进行调试,在online-store中的api.js中,声明一个本地的local_host,替换掉“商品类别”中的host
//获取商品类别信息
export const getCategory = params => {
  if('id' in params){
    return axios.get(`${local_host}/categorys/`+params.id+'/');
  }
  else {
    return axios.get(`${local_host}/categorys/`, params);
  }
};

3、vue 展示商品列表页数据

  • 重写 filters.py: 查询第一类别下所有商品的所有数据
from django.db.models import Q

class GoodsFilter(django_filters.rest_framework.FilterSet):
    """
    商品的过滤类
    """
    price_min = django_filters.NumberFilter(field_name='shop_price', help_text="最低价格", lookup_expr='gte')
    price_max = django_filters.NumberFilter(field_name='shop_price', lookup_expr='lte')
    top_category = django_filters.NumberFilter(method='top_category_filter')

    def top_category_filter(self, queryset, name, value):
        return queryset.filter(Q(category_id=value) | Q(category__parent_category_id=value) |
                               Q(category__parent_category__parent_category_id=value))

    class Meta:
        model = Goods
        fields = ['price_min', 'price_max', 'is_hot', 'is_new']
  • 梳理online-store实现流程
  • 点击“生鲜食品”:
    在这里插入图片描述
  • 点击“酒水饮料”:
    在这里插入图片描述

4、vue 的商品搜索功能

  • online-store中vue实现搜索。
  • 搜索栏输入: 牛奶
  • 自动获取后台数据,显示在页面
    +


下周计划:

  • “用户登录与手机注册”
    • drf 的tock登录和原理
    • viewsets 配置认证类
    • json web token 的原理
    • json web token 方式完成用户认证
    • vue 和 jwt 接口调试
    • 云片网发送短信验证码
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值