05-商品类别数据和VUE展示
一、商品类别数据和VUE展示
1、商品类别数据接口
将商品类别数据展示出来,视图(views.py)代码如下:
class CategoryViewset(mixins.ListModelMixin,viewsets.GenericViewSet):
"""
list:
商品分类列表数据
"""
queryset = GoodsCategory.objects.all()
serializer_class = GoodsCategorySerializer
序列化器里的代码为:
class GoodsCategorySerializer(serializers.ModelSerializer):
"""
商品类别序列化
"""
class Meta:
model = GoodsCategory # 指明model
fields = "__all__" # 将全部字段显示出来
路由配置(urls.py):
#配置Category的url
router.register(r"categorys",CategoryViewset)
这样就可以访问到类别啦,但是我们还想要访问类别下的商品信息,那么我们提供的接口:
视图的代码:
#mixins.RetrieveModelMixin获取具体详情页
class CategoryViewset(mixins.ListModelMixin,mixins.RetrieveModelMixin,viewsets.GenericViewSet):
"""
list:
商品分类列表数据
"""
queryset = GoodsCategory.objects.all()
serializer_class = GoodsCategorySerializer
序列化器中的代码为:
class GoodsCategorySerializer3(serializers.ModelSerializer):
"""
商品类别序列化
"""
class Meta:
model = GoodsCategory # 指明model
fields = "__all__" # 将全部字段显示出来 class GoodsCategorySerializer2(serializers.ModelSerializer):
"""
商品类别序列化
"""
sub_cat = GoodsCategorySerializer3(many=True)
class Meta:
model = GoodsCategory # 指明model
fields = "__all__" # 将全部字段显示出来 class GoodsCategorySerializer(serializers.ModelSerializer):
"""
商品类别序列化
"""
sub_cat = GoodsCategorySerializer2(many=True)
class Meta:
model = GoodsCategory # 指明model
fields = "__all__" # 将全部字段显示出来
将每一级别的都嵌套进来,这样就可以访问到每一个类别下的具体信息,sub_cat是外键声明的关系,嵌套进来以后,就可以访问啦,还可以直接访问到具体的商品细节,因为视图中继承mixins.RetrieveModelMixin,viewsets.GenericViewSet又将路由中的ID都配置好了,这样省去很多麻烦,大大提高了开发效率。

2、VUE展示商品分类数据
将Category和VUE要进行调试,在进行调试之前,需要解决掉跨域的问题,跨域问题在前后端分离开发当中非常的常见,
编辑VUE项目将类别展示的地址改为本地地址,其他地址不要改动,这样就可以实现我们的那部分区域:



按F12检查,发现一个端口是8080,另一个端口是8000,浏览器是不允许跨域的,因此我们应该在服务器设置DRF跨域,跨域有两种解决方式,一是服务器解决,另一种前端解决。


安装完成后,根据Django-cors-headers官方文档完成服务端的配置,
第一步

第二步:and then add it to your installed apps:
INSTALLED_APPS = [
...
'corsheaders',
...
]
第三步:Also if you are using CORS_REPLACE_HTTPS_REFERER it should be placed before Django's CsrfViewMiddleware (see more below).
必须将中间件放在Csrf中间件之前。
MIDDLEWARE = [
'corsheaders.middleware.CorsMiddleware',#官方文档要求必须放在CSRF之前
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
]







看这样就能继续后面的开发啦,遇到错误,首先要学会看懂英文错误说明,然后根据报错异常一步一步排除,最终实现debug。现在我们需要做的就是将一级类目显示在导航栏上。




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

因此我们要去后端过滤信息,过滤商品信息,将一类的子类或者子类的父类都要过滤出来。

添加过滤器的代码为:
import django_filters
from django.db.models import Q from .models import Goods class GoodsFilter(django_filters.rest_framework.FilterSet):
"""
商品过滤器
"""
price_min = django_filters.NumberFilter(field_name="shop_price",lookup_expr="gte")
price_max = django_filters.NumberFilter(field_name="shop_price", lookup_expr="lte")
name = django_filters.CharFilter(field_name="name", lookup_expr="icontains")
#这里过滤的字段要和前端传过来的字段一样
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","name","top_category"]



来看第二个,排序的参数是ordering。

在后端接口点击排序,发现参数就是ordering,因此不用设置排序参数啦。


发现这里的最大值与最小值的参数与后端我们设置的不一样,因此我们需要去后端将参数改为一样的。

参数都修改完了,前端页面的排序以及价格都是和后端匹配的,后端必须将数据按照前端的排序,提供接口出来,因此运行前端发成功的:

Vue商品展示页面就完成啦。
4、Vue商品搜索功能
由于后端将搜索功能都写好了,因此只要前后端参数匹配,就可以进行查询啦。


05-商品类别数据和VUE展示的更多相关文章
- 7- vue django restful framework 打造生鲜超市 -商品类别数据展示(上)
Vue+Django REST framework实战 搭建一个前后端分离的生鲜超市网站 Django rtf 完成 商品列表页 并没有将列表页的数据json 与前端的页面展示结合起来 讲解如果将dr ...
- Vue + Django 2.0.6 学习笔记 6.1-6.2 商品类别数据接口
这两节主要是说获取商品类别的1 2 3类的列表和某个类的详情 我直接上代码吧 views.py: from .serializers import CategorySerializer class C ...
- 在Vue前端界面中,几种数据表格的展示处理,以及表格编辑录入处理操作。
在Vue前端项目中,我这里主要是基于Vue+Element的开发,大多数情况下,我们利用Element的表格组件就可以满足大多数情况的要求,本篇随笔针对表格的展示和编辑处理,综合性的介绍几款表格组件的 ...
- 微信小程序结合后台数据管理实现商品数据的动态展示、维护
微信小程序给我们提供了一个很好的开发平台,可以用于展现各种数据和实现丰富的功能,本篇随笔介绍微信小程序结合后台数据管理实现商品数据的动态展示.维护,介绍如何实现商品数据在后台管理系统中的维护管理,并通 ...
- Django商城项目笔记No.18商品部分-数据表创建
数据库表设计 在电商中对于商品,有两个重要的概念:SPU和SKU SPU = Standard Product Unit (标准产品单位) SPU是商品信息聚合的最小单位,是一组可服用.易检索的标准化 ...
- 05:ModelForm 数据验证 & 生成html & 数据库操作
目录:Django其他篇 01:Django基础篇 02:Django进阶篇 03:Django数据库操作--->Model 04: Form 验证用户数据 & 生成html 05:Mo ...
- 【SSH网上商城项目实战09】添加和更新商品类别功能的实现
转自:https://blog.csdn.net/eson_15/article/details/51347734 上一节我们做完了查询和删除商品的功能,这一节我们做一下添加和更新商品的功能. 1. ...
- 用Python爬取分析【某东618】畅销商品销量数据,带你看看大家都喜欢买什么!
618购物节,辰哥准备分析一波购物节大家都喜欢买什么?本文以某东为例,Python爬取618活动的畅销商品数据,并进行数据清洗,最后以可视化的方式从不同角度去了解畅销商品中,名列前茅的商品是哪些?销售 ...
- Struts2学习笔记NO.1------结合Hibernate完成查询商品类别简单案例(工具IDEA)
Struts2学习笔记一结合Hibernate完成查询商品类别简单案例(工具IDEA) 1.jar包准备 Hibernate+Struts2 jar包 struts的jar比较多,可以从Struts官 ...
随机推荐
- samba文件共享服务部署
1.安装samaba服务程序 yum install -y samba 2.查看smaba文件,由于注释空行较多,选择过滤 egrep -v "#|;|^$" /etc/samba ...
- PHP会话机制---session的基本使用
登录网站后,在每个网页都能拿到用户信息 (1) 使用超链接传递用户名,这样太繁琐了,不建议使用 . (2) 使用数据库,每打开一个页面都查询一次用户信息表,这样网页加载速度变慢,用户体验变差. (3) ...
- 程序员成长的四个简单技巧,你 get 了吗?
最近拜读了"阿里工程师的自我修养"手册,12 位技术专家分享生涯感悟来帮助我们这些菜鸡更好的成长,度过中年危机,我收获颇多,其中有不少的方法技巧和我正在使用的,这让我觉得我做的这些 ...
- [USACO10NOV]购买饲料Buying Feed 单调队列优化DP
题目描述 约翰开车来到镇上,他要带 KKK 吨饲料回家.运送饲料是需要花钱的,如果他的车上有 XXX 吨饲料,每公里就要花费 X2X^2X2 元,开车D公里就需要 D×X2D\times X^2D×X ...
- Cocos2d-x 学习笔记(11.1) MoveBy MoveTo
1. MoveBy MoveTo 两方法都是对node的平移,MoveBy是相对当前位置的移动.MoveTo是By的子类,是移动到世界坐标位置. 1.1 成员变量和create方法 MoveBy的主要 ...
- Ubuntu 安装mysql & 自定义数据存储目录
一.安装 apt-get install mysql-server 执行过程如下: root@duke:~# apt-get install mysql-server 正在读取软件包列表... 完成 ...
- HTTP使用get,post方式连接
在项目中使用了http的get和post方式连接,发送传输数据: public static String doGet(String httpUrl) { HttpURLConnection conn ...
- 在react项目中使用redux or mobx?
主要比较参数: 库体积,打包项目体积 开发体验 性能对比 在对比参数前首先分析一下redux和mobx的设计模式,redux和mobx都没有使用传统的mvc/mvvm形式,而且他们使用flux结构也略 ...
- 【Windows系统】win10系统假死,窗口不能动,鼠标能动或不能动,最后蓝屏显示错误码: VIDEO_DXGKRNL_FATAL_ERROR 的解决办法
1. 问题的出现过程 最近博主自己用的 windows10 系统就碰到了这个问题. 一开始出现这个问题的征兆是鼠标会时不时地卡顿,一出现卡顿就会等个 1-3秒才能动.然后频繁卡顿(注意,这里根据经验就 ...
- vue之页面缓存问题(基于2.0)
为什么会有这篇文章 在vue2.0中出现了列表页面是每次都重新加载数据,但是详情页面却只在第一次加载的时候调用数据,如果返回到列表再进入详情那么页面是不会重新渲染页面. 1 用vue-router 重 ...