web前端Vue+Django rest framework 框架 生鲜电商项目实战视频教程   

web前端Vue+Django rest framework 框架 生鲜电商项目实战视频教程 学习

1.drf前期准备

1.django-rest-framework官方文档

https://www.django-rest-framework.org/

#直接百度找到的djangorestframework的官网是打不开的

2.安装依赖包

如图所示,django restframework的依赖模块,除了coreapi和django-guardian,已经在前面安装过了。

打开终端,执行安装命令

pip install django-guardian

pip install coreapi

3.将rest_framework在settings中注册

4.管理调试api的时候会用到的url配置,在urls.py中

from django.urls import path

from django.views.static import serve

from MxShop.settings import MEDIA_ROOT

from django.urls import include

import xadmin

from rest_framework.documentation import include_docs_urls

from goods.views import GoodsListView

urlpatterns = [

path('xadmin/', xadmin.site.urls),

path('media/<path:path>',serve,{'document_root':MEDIA_ROOT}),

path('ueditor/',include('DjangoUeditor.urls' )),

path('docs/',include_docs_urls(title="慕学生鲜")),

path('api-auth/', include('rest_framework.urls')),

path('goods/',GoodsListView.as_view(),name='goods-list'),

]

2.序列化商品数据

在goods目录下新建serializers.py文件

from rest_framework import serializers

from goods.models import Goods,GoodsCategory

class GoodsSerializer(serializers.Serializer):#Serializer方式序列化

name=serializers.CharField(required=True,max_length=100)

click_num=serializers.IntegerField(default=0)

goods_front_image=serializers.ImageField()

# 用于post

def create(self, validated_data):

return Goods.objects.create(**validated_data)

class CategoryModelSerializer(serializers.ModelSerializer):

class Meta:

model=GoodsCategory

fields="__all__"#将整个表的所有字段都序列化

class GoodsModelSerializer(serializers.ModelSerializer):#ModelSerializer方式序列化

category=CategoryModelSerializer()#外键信息嵌入

class Meta:

model=Goods

# fields="__all__"#将整个表的所有字段都序列化

fields=('name','goods_front_image','category')#指定序列化某些字段

 3.视图封装

1.使用APIView+Response实现商品列表页视图(最想原生django的CBV写法)

views.py中

from .serializers import GoodsSerializer,GoodsModelSerializer

from rest_framework.views import APIView

from rest_framework.response import Response

from .models import Goods

from rest_framework import status

class GoodsListView1(APIView):

"""

List all goods,使用Serializer

"""

def get(self, request, format=None):

goods=Goods.objects.all()[:10]

goods_serializer = GoodsSerializer(goods, many=True)

return Response(goods_serializer.data)

def post(self,request,format=None):

serializer=GoodsSerializer(data=request.data)

if serializer.is_valid():

serializer.save()

return Response(serializer.data,status=status.HTTP_201_CREATED)

return Response(serializer.errors,status=status.HTTP_400_BAD_REQUEST)

class GoodsListView2(APIView):

"""

List all goods,使用ModelSerializer

"""

def get(self, request, format=None):

goods=Goods.objects.all()[:10]

goods_serializer = GoodsModelSerializer(goods, many=True)

return Response(goods_serializer.data)

urls.py中

from django.contrib import admin

from django.urls import path

from django.views.static import serve

from MxShop.settings import MEDIA_ROOT

import xadmin

from goods.views import GoodsListView1,GoodsListView2

urlpatterns = [

path('admin/', admin.site.urls),

path('xadmin/', xadmin.site.urls),

path('media/<path:path>',serve,{'document_root':MEDIA_ROOT}),

path('ueditor/',include('DjangoUeditor.urls' )),

path('goods/',GoodsListView1.as_view(),name='goods-list'),

path('goods2/',GoodsListView2.as_view(),name='goods-list2')

]

2.使用mixins+generic实现商品列表页视图

from .serializers import GoodsSerializer

from .models import Goods

from rest_framework import mixins

from rest_framework import generics

class GoodsListView(mixins.ListModelMixin,generics.GenericAPIView):

"""

商品列表页

"""

  queryset = Goods.objects.get_queryset().order_by('id')[:10]

  serializer_class = GoodsSerializer

  def get(self,request,*args,**kwargs):

    return self.list(request,*args,**kwargs)

3.使用generics.ListAPIView实现商品列表页视图

from .serializers import GoodsSerializer

from .models import Goods

from rest_framework import generics

class GoodsListView(generics.ListAPIView):

"""

商品列表页

"""

queryset = Goods.objects.get_queryset().order_by('id')

serializer_class = GoodsSerializer

 4.分页

1.全局分页:在settings中加入代码,所有的列表页,都会变成每10个一页的分页方式,显然这有很大的局限性

REST_FRAMEWORK={

'DEFAULT_PAGINATION_CLASS': 'rest_framework.pagination.PageNumberPagination',

'PAGE_SIZE': 10,

}

 2.局部定制化分页:在view中定义代码

from rest_framework.pagination import PageNumberPagination

class GoodsPagination(PageNumberPagination):

page_size = 10

page_size_query_param = 'page_size'

page_query_param = 'p'

max_page_size = 100

class GoodsListView(generics.ListAPIView):

"""

商品列表页

"""

queryset = Goods.objects.get_queryset().order_by('id')

serializer_class = GoodsSerializer

pagination_class = GoodsPagination

 5.viewsets

1.在views中

from rest_framework import viewsets

class GoodsListViewSet(mixins.ListModelMixin,viewsets.GenericViewSet):

"""

商品列表页

"""

queryset = Goods.objects.get_queryset().order_by('id')

serializer_class = GoodsSerializer

pagination_class = GoodsPagination

2.在urls中

from goods.views import GoodsListViewSet

from rest_framework.routers import DefaultRouter

router = DefaultRouter()

router.register(r'goods', GoodsListViewSet,base_name="goods")
urlpatterns = [ path('', include(router.urls)) ]

web前端Vue+Django rest framework 框架 生鲜电商项目实战视频教程 ☝☝☝的更多相关文章

  1. web前端Vue+Django rest framework 框架 生鲜电商项目实战✍✍✍

    web前端Vue+Django rest framework 框架 生鲜电商项目实战  整个课程都看完了,这个课程的分享可以往下看,下面有链接,之前做java开发也做了一些年头,也分享下自己看这个视频 ...

  2. 引爆潮流技术 Vue+Django REST framework打造生鲜电商项目

    引爆潮流技术Vue+Django REST framework打造生鲜电商项目 整个课程都看完了,这个课程的分享可以往下看,下面有链接,之前做java开发也做了一些年头,也分享下自己看这个视频的感受, ...

  3. Vue+Django REST framework打造生鲜电商项目

    1-1 课程导学 2-1 Pycharm的安装和简单使用 2-2 MySQL和Navicat的安装和使用 2-3 Windows和Linux下安装Python2和Python3 2-4 虚拟环境的安装 ...

  4. Spark大型电商项目实战-及其改良之番外(1)-将spark前端页面效果高效拷贝至博客

    Spark大型电商项目实战-及其改良这个系列的时间轴展示图一直在变....1-3篇是用图直接表示时间轴,用一段简陋的html代码表示时间表.第4篇开始才是用比较完整的前端效果,能移动.缩放时间轴,鼠标 ...

  5. Django REST framework+Vue 打造生鲜电商项目(笔记二)

    (转自https://www.cnblogs.com/derek1184405959/p/8768059.html)(有修改) 接下来开始引入django resfulframework,体现它的强大 ...

  6. Django REST framework+Vue 打造生鲜电商项目(笔记四)

    (PS:部分代码和图片来自博客:http://www.cnblogs.com/derek1184405959/p/8813641.html.有增删) 一.用户登录和手机注册 1.drf的token功能 ...

  7. Django REST framework+Vue 打造生鲜电商项目(笔记三)

    (PS:转载自http://www.cnblogs.com/derek1184405959/p/8810591.html  有修改) 一.drf的过滤 (1)添加到app里面 INSTALLED_AP ...

  8. Django REST framework+Vue 打造生鲜电商项目(笔记十)

    (from:https://www.cnblogs.com/derek1184405959/p/8877643.html  有修改) 十三.首页.商品数量.缓存和限速功能开发 首先把pycharm环境 ...

  9. Django REST framework+Vue 打造生鲜电商项目(笔记九)

    (from:http://www.cnblogs.com/derek1184405959/p/8859309.html) 十二.支付宝沙箱环境配置 12.1.创建应用 进入蚂蚁金服开放平台(https ...

随机推荐

  1. mysql之innodb存储引擎---数据存储结构

    一.背景 1.1文件组织架构 首先看一下mysql数据系统涉及到的文件组织架构,如下图所示: msyql文件组织架构图 从图看出: 1.日志文件:slow.log(慢日志),error.log(错误日 ...

  2. Vert.x 学习之MongoDB Client

    Vert.x MongoDB Client 原文档:Vert.x MongoDB Client 组件介绍 您的 Vert.x 应用可以使用 Vert.x MongoDB Client(以下简称客户端) ...

  3. JAVA学习笔记—review基本知识[反射与异常]

    JAVA学习笔记—review基本知识[反射与异常] 1.异常: 1.1异常的分类: Java会将所有的异常封装成对象,其根本父类为Throwable. Throwable有两个子类:Error 和E ...

  4. MySQL 8.0主从(Master-Slave)配置

    版权声明:转载请注明出处,谢谢配合. https://blog.csdn.net/zyhlwzy/article/details/80569422 MySQL 主从复制的方式有多种,本文主要演示基于基 ...

  5. Qt疑难问题-模态窗口父类被析构

    最近遇到一个朋友,问了我一个刁钻的问题,当你模态弹出一个窗体时,后台把这个窗体的父类给析构了,这个时候会出现什么样的情况? 听到问题后我真是一脸懵逼呀!从来没有这么写过代码. 随后写了一个简单的测试d ...

  6. java8 新特性精心整理(全)

    前言 越来越多的项目已经使用 Java 8 了,毫无疑问,Java 8 是Java自Java 5(发布于2004年)之后的最重要的版本.这个版本包含语言.编译器.库.工具和 JVM 等方面的十多个新特 ...

  7. Spring Boot2 系列教程(七)理解自动化配置的原理

    Spring Boot 中的自动化配置确实够吸引人,甚至有人说 Spring Boot 让 Java 又一次焕发了生机,这话虽然听着有点夸张,但是不可否认的是,曾经臃肿繁琐的 Spring 配置确实让 ...

  8. uboot学习之uboot.bin的运行流程

    上篇博客:http://www.cnblogs.com/yeqluofwupheng/p/7347925.html 讲到uboot-spl的工作流程,接下来简述一下uboot.bin的工作流程,这对应 ...

  9. (七十二)c#Winform自定义控件-雷达图

    前提 入行已经7,8年了,一直想做一套漂亮点的自定义控件,于是就有了本系列文章. GitHub:https://github.com/kwwwvagaa/NetWinformControl 码云:ht ...

  10. html中的空格

    网上摘录: HTML提供了6种空格实体.除第一种外,其他几种空格在不同浏览器中宽度各异.               它叫不换行空格,全称No-Break Space,它是最常见和我们使用最多的空格, ...