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)) ]

原文地址:https://www.cnblogs.com/itye/p/11690333.html

时间: 2024-10-06 21:35:45

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

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

引爆潮流技术Vue+Django REST framework打造生鲜电商项目 1.Django REST framework框架介绍 Django REST framework框架是一个功能强大且灵活的工具包,用于构建Web API,且Django Rest Framework 是 Django 依赖扩展 Restful Api 的框架,与Django的使用风格类似,它的官方网站是:https://www.django-rest-framework.org/ 2.设计API 我们先选择一个AP

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

Vue + Django REST framework 打造生鲜电商项目 需要的联系QQ:996072671 原文地址:https://www.cnblogs.com/guohuide/p/8321842.html

36套精品Java高级课,架构课,java8新特性,P2P金融项目,程序设计,功能设计,数据库设计,第三方支付,web安全,高并发,高性能,高可用,分布式,集群,电商,缓存,性能调优,设计模式,项目实战,大型分布式电商项目实战视频教程

新年伊始,学习要趁早,点滴记录,学习就是进步! QQ:1225462853 视频课程包含: 36套Java精品高级课架构课包含:java8新特性,P2P金融项目,程序设计,功能设计,数据库设计,架构设计,web安全,高并发,高性能,高可用,高可扩展,分布式,集群,电商,缓存,性能调优,设计模式,项目实战,工作流,程序调优,负载均衡,Solr集群与应用,主从复制,中间件,全文检索,Spring boot,Spring cloud,Dubbo,Elasticsearch,Redis,ActiveMQ

3- vue django restful framework 打造生鲜超市 - model设计和资源导入

3- vue django restful framework 打造生鲜超市 - model设计和资源导入 使用Python3.6与Django2.0.2(Django-rest-framework)以及前端vue开发的前后端分离的商城网站 项目支持支付宝支付(暂不支持微信支付),支持手机短信验证码注册, 支持第三方登录.集成了sentry错误监控系统. 本小节内容: model设计与资源引入 资源初始化 数据库设计,数据表结构 新建虚拟环境 mkvirtualenv -p=D:\softEnv

DRF (Django REST framework) 框架介绍

Web应用模式 在开发Web应用中,有两种应用模式: 前后端不分离 前后端分离 1 前后端不分离 在前后端不分离的应用模式中,前端页面看到的效果都是由后端控制,由后端渲染页面或重定向,也就是后端需要控制前端的展示,前端与后端的耦合度很高. 这种应用模式比较适合纯网页应用,但是当后端对接App时,App可能并不需要后端返回一个HTML网页,而仅仅是数据本身,所以后端原本返回网页的接口不再适用于前端App应用,为了对接App后端还需再开发一套接口. 2 前后端分离 在前后端分离的应用模式中,后端仅返

Django REST framework框架详解

Django REST framework 简介 在序列化与反序列化时,虽然操作的数据不尽相同,但是执行的过程却是相似的,也就是说这部分代码是可以复用简化编写的. 在开发REST API的视图中,虽然每个视图具体操作的数据不同,但增.删.改.查的实现流程基本套路化,所以这部分代码也是可以复用简化编写的: 增:校验请求数据 -> 执行反序列化过程 -> 保存数据库 -> 将保存的对象序列化并返回 删:判断要删除的数据是否存在 -> 执行数据库删除 改:判断要修改的数据是否存在 -&g

web前端之HTML的大框架(body元素与frameset元素)

web前端之HTML的大框架      body元素与frameset元素 对于从事html的人员来说,我们一般熟悉的框架是先声明html ,然后在<html>标签对里包着<head>标签对和<body>标签对,body元素定义文档的主体,包含文档的所有内容(比如文本.超链接.图像.表格和列表等等).而我们想要在页面中显示出来的内容全部写在<body>标签对里. 例如: <!DOCTYPE html> <html> <head&

Git.Framework 框架随手记--ORM项目工程

前面已经简单介绍过了该框架(不一定是框架),本文开始重点记录其使用过程.可能记录的内容不是太详尽,框架也可能非常烂,但是里面的代码句句是实战项目所得.本文非教唆之类的文章,也非批判之类的文章,更不是炫技之类的文章,只是工作的记录和总结,希望能够给大家一些启迪,忘诸位勿喷! 一. 组建项目需要的几个部分 .NET中最为经典的三层结构,众所周知,无人不晓. 在Git.Framework框架中我们也遵循最基本的这种结构,ORM部分我们划分为如下: 数据实体层,数据访问接口层,数据访问层,[层序主入口加

如何深入了解Web前端的未来前景,并且用更有效率的方式去学习

随着互联网在中国的发展,只要跟互联网计算机领域相关的工作,都成了每一年的热门,从2015年开始,web前端的需要量,像火箭一样"嗖"的一下就上去了.现在各种传统行业如电子.机械.建筑等并不被年轻人所青睐,互联网时代的年轻人更加喜欢快捷的.方便的,信息化的工作,转行做web前端的就是最多的,同时web前端岗位也是需求最大的.而当我们决定学习一个技能的时候,首先会考虑的以后发展的前景如何,然后就是是否难学,零基础学不学的会,今天小编就来为你揭开WEB前端的神秘面纱,认真看完. 我是一个做w