Vue展示商品分类数据和搜索

前言

所有vue接口全部在src/api/api.js文件下

代码已上传至github:https://github.com/kalipoison/fresh-market

此项目仅学习用途

要求

Package Version


certifi 2020.4.5.1
chardet 3.0.4
coreapi 2.3.1
coreschema 0.0.4
Django 1.11.3
django-cors-headers 2.1.0
django-crispy-forms 1.6.1
django-filter 1.0.4
django-formtools 2.0
django-guardian 1.4.9
django-reversion 2.0.9
djangorestframework 3.6.3
future 0.16.0
httplib2 0.9.2
idna 2.9
itypes 1.2.0
Jinja2 2.11.2
Markdown 2.6.8
MarkupSafe 1.1.1
mysqlclient 1.3.10
olefile 0.46
Pillow 4.2.1
pip 20.0.2
pytz 2019.3
requests 2.23.0
setuptools 46.1.3
six 1.10.0
uritemplate 3.0.1
urllib3 1.25.9
wheel 0.34.2
XlsxWriter 0.9.8
xlwt 1.2.0

代码已上传至github:https://github.com/kalipoison/fresh-market

此项目仅学习用途

流程

修改api.js内容,修改商品类别获取ip

将获取商品列表做如下修改

运行vue代码发现,发现全部商品分类下没有一级目录,一级目录已改为后端提供数据

前后端分离架构首先要解决跨域问题,当然npm也可以解决跨域问题,小编这里采用服务器来解决跨域问题

安装django-cors-headers:

pip install django-cors-headers==2.1.0

在settings.py的INSTALLED_APPS 中添加

    'corsheaders',

MIDDLEWARE中添加(尽可能靠前)

'corsheaders.middleware.CorsMiddleware',

并添加

CORS_ORIGIN_ALLOW_ALL = True

goods文件夹下serializers.py代码如下:

serializers.py

from rest_framework import serializers
from django.db.models import Qfrom goods.models import Goods, GoodsCategory,HotSearchWordsclass CategorySerializer3(serializers.ModelSerializer):class Meta:model = GoodsCategoryfields = "__all__"class CategorySerializer2(serializers.ModelSerializer):sub_cat = CategorySerializer3(many=True)class Meta:model = GoodsCategoryfields = "__all__"class CategorySerializer(serializers.ModelSerializer):sub_cat = CategorySerializer2(many=True)class Meta:model = GoodsCategoryfields = "__all__"class GoodsSerializer(serializers.ModelSerializer):category = CategorySerializer()class Meta:model = Goodsfields = "__all__"class GoodCategorySerializer(serializers.ModelSerializer):'''商品类别序列化'''class Meta:model = Goodsfields = "__all__"class HotWordsSerializer(serializers.ModelSerializer):class Meta:model = HotSearchWordsfields = "__all__"

goods文件夹下views.py代码如下:

views.py

from rest_framework.views import APIView
from rest_framework.response import Response
from rest_framework import mixins
from rest_framework import generics
from rest_framework import filters
from rest_framework.pagination import PageNumberPagination
from django_filters.rest_framework import DjangoFilterBackend
from rest_framework import viewsets
from rest_framework.authentication import TokenAuthenticationfrom .models import Goods,GoodsCategory,HotSearchWords
from .serializers import GoodsSerializer,CategorySerializer,HotWordsSerializer
from .filters import GoodsFilter
# Create your views here.class GoodsPagination(PageNumberPagination):page_size = 12page_size_query_param = 'page_size'page_query_param = "page"max_page_size = 100class GoodsListViewSet(mixins.ListModelMixin, mixins.RetrieveModelMixin, viewsets.GenericViewSet):"""商品列表页, 分页, 搜索, 过滤, 排序"""queryset = Goods.objects.all()serializer_class = GoodsSerializerpagination_class = GoodsPaginationauthentication_classes = (TokenAuthentication, )filter_backends = (DjangoFilterBackend, filters.SearchFilter, filters.OrderingFilter)filter_class = GoodsFiltersearch_fields = ('name', 'goods_brief', 'goods_desc')ordering_fields = ('sold_num', 'add_time')class CategoryViewset(mixins.ListModelMixin, mixins.RetrieveModelMixin, viewsets.GenericViewSet):"""list:商品分类列表数据retrieve:获取商品分类详情"""queryset = GoodsCategory.objects.filter(category_type=1)serializer_class = CategorySerializerclass HotSearchsViewset(mixins.ListModelMixin, viewsets.GenericViewSet):"""获取热搜词列表"""queryset = HotSearchWords.objects.all().order_by("-index")serializer_class = HotWordsSerializer

url.py

from django.conf.urls import url,include
# from django.contrib import admin
import xadmin
from Mxshop.settings import MEDIA_ROOT
from django.views.static import serve
from rest_framework.documentation import include_docs_urls
from rest_framework.routers import DefaultRouter
from rest_framework.authtoken import views
from rest_framework_jwt.views import obtain_jwt_token
from goods.views import GoodsListViewSet,CategoryViewset,HotSearchsViewsetrouter = DefaultRouter()#配置goods的url
router.register(r'goods', GoodsListViewSet, base_name="goods")#配置category的url
router.register(r'categorys', CategoryViewset, base_name="categorys")router.register(r'hotsearchs', HotSearchsViewset, base_name="hotsearchs")goods_list = GoodsListViewSet.as_view({'get': 'list',
})urlpatterns = [url(r'^xadmin/', xadmin.site.urls),url(r'^media/(?P<path>.*)$', serve, {"document_root": MEDIA_ROOT}),url(r'^', include(router.urls)),url(r'^api-auth/', include('rest_framework.urls', namespace='rest_framework')),url(r'docs/',include_docs_urls(title='GOHB生鲜')),# drf自带的token认证模式url(r'^api-token-auth/', views.obtain_auth_token),# jwt的认证接口url(r'^login/', obtain_jwt_token),
]

运行django,发现全部商品分类下的一级目录成功展示

进入xadmin后台,任选一级类目的商品

将其设置为导航,保存即可。

发现首页的导航商品类别出现。

点击导航商品类别,发现商品成功展出。

Django 前后端分离实战项目 生鲜超市(七)之Vue展示商品分类数据和搜索相关推荐

  1. Django 前后端分离实战项目 生鲜超市(十四)之支付宝接入

    支付宝接入 前言 所有vue接口全部在src/api/api.js文件下 代码已上传至github:https://github.com/kalipoison/fresh-market 此项目仅学习用 ...

  2. 视频教程-Angular+Django前后端分离实战项目开发教程-AngularJS

    Angular+Django前后端分离实战项目开发教程 胜蓝博创(韬略课堂)创始人,IT培训讲师,先后在蓝港在线,热酷,乐元素等大型游戏公司任职,参与过多款大型网游.手游的设计和开发,精通页游.手游前 ...

  3. 视频教程-全新Go语言前后端分离实战项目(Beego)-Go语言

    全新Go语言前后端分离实战项目(Beego) 张长志技术全才.擅长领域:区块链.大数据.Java等.10余年软件研发及企业培训经验,曾为多家大型企业提供企业内训如中石化,中国联通,中国移动等知名企业. ...

  4. 视频教程-Python+Vue+Django前后端分离项目实战-Python

    Python+Vue+Django前后端分离项目实战 教学风格独特,以学员视角出发设计课程,难易适度,重点突出,架构清晰,将实战经验融合到教学中.讲授技术同时传递方法.得到广大学员的高度认可. 王进 ...

  5. Nginx+uwsgi+celery+supervisor部署Django前后端分离项目

    转载 Nginx+uwsgi+celery+supervisor部署Django前后端分离项目 ljmict 0人评论 3887人阅读 2018-08-08 01:29:45 本实验实现了负载均衡.反 ...

  6. 视频教程-SpringBoot2+Vue+AntV前后端分离开发项目实战-Java

    SpringBoot2+Vue+AntV前后端分离开发项目实战 10多年互联网一线实战经验,现就职于大型知名互联网企业,架构师, 有丰富实战经验和企业面试经验:曾就职于某上市培训机构数年,独特的培训思 ...

  7. SpringBoot+Vue前后端分离实战(用户注册登录)

    文章目录 前言 注册 前端部分逻辑 发送请求 后端处理 登录 前端获取token 前端token状态管理 后端处理 用户登录 生成token 拦截器设置 总结 前言 昨天抽空终于把后端架起来了,准备开 ...

  8. Django前后端分离实现登录验证码功能

    Django前后端分离实现登录验证码功能 当下最流行最热门的开发方式当属前后端分离开发,分工也更加明确与专注,前端也是越来越难,几天不学习就跟不上节奏,一个月不学习可以好不夸张的说,你已经不适合这个行 ...

  9. 前后端分离简单项目--蚂蚁博客--简介

    原文网址:前后端分离简单项目--蚂蚁博客--简介_IT利刃出鞘的博客-CSDN博客 简介 说明 本文介绍我从0开发的前后端分离的简单项目--蚂蚁博客. 本项目是一个全栈项目,使用主流.前沿的技术栈开发 ...

最新文章

  1. mysql命令行的光标不显示和git-bash不能直接使用mysql登录的问题
  2. Android开发应该了解的Binder原理,专题解析
  3. dim private public static_static方法 (静态方法)
  4. sai u 2016
  5. js异步加载 defer和async 比较
  6. linux服务器探针软件,服务器安装ServerStatus监控探针教程
  7. 前端学习(1525):简化模板代码
  8. java3d曲面图开发_web三维图表的开发
  9. 【蓝桥杯嵌入式】【STM32】7_RTC之实时时间显示和硬件闹钟设置
  10. [HDOJ]1018. Big Number
  11. DNS服务器之二:从服务器的实现
  12. mysql控制结构_Mysql 控制结构初识
  13. ios签名php在线监控,IOS无需签名无需越狱H5网页在线封装APP教程
  14. 汇编语言 写 Hello World
  15. Vue 中英文 组件 样式 写法
  16. NOI前的做题计划记录
  17. Unity 回合制战斗
  18. 《三国演义》中死不瞑目的十大风流人物
  19. 自学Matlab必备的60个小程序代码
  20. 【退役记】NOI2022

热门文章

  1. 基于matlab的锁相环频率合成器,锁相环与频率合成器电路设计
  2. 关于AjaxPro用法
  3. HTML编写script,script
  4. VUE如何导入开源项目及报错处理gyp ERR! stack Error: Command failed: D:\Python\python.EXE -c import sys; print “%s.
  5. 【网络攻防】网络扫描工具Nmap的使用
  6. LifeKeeper 6.0 for Windows
  7. Codevs p1014 装箱问题
  8. 开源操作系统读《移动互联网白皮书》有感
  9. NR/5G ~ R16 DL SPS
  10. Whale 帷幄技术周大咖分享:AI 迎来大洗牌