web前端Vue+Django rest framework 框架 生鲜电商项目实战视频教程 ☝☝☝
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 框架 生鲜电商项目实战视频教程 ☝☝☝的更多相关文章
- web前端Vue+Django rest framework 框架 生鲜电商项目实战✍✍✍
web前端Vue+Django rest framework 框架 生鲜电商项目实战 整个课程都看完了,这个课程的分享可以往下看,下面有链接,之前做java开发也做了一些年头,也分享下自己看这个视频 ...
- 引爆潮流技术 Vue+Django REST framework打造生鲜电商项目
引爆潮流技术Vue+Django REST framework打造生鲜电商项目 整个课程都看完了,这个课程的分享可以往下看,下面有链接,之前做java开发也做了一些年头,也分享下自己看这个视频的感受, ...
- Vue+Django REST framework打造生鲜电商项目
1-1 课程导学 2-1 Pycharm的安装和简单使用 2-2 MySQL和Navicat的安装和使用 2-3 Windows和Linux下安装Python2和Python3 2-4 虚拟环境的安装 ...
- Spark大型电商项目实战-及其改良之番外(1)-将spark前端页面效果高效拷贝至博客
Spark大型电商项目实战-及其改良这个系列的时间轴展示图一直在变....1-3篇是用图直接表示时间轴,用一段简陋的html代码表示时间表.第4篇开始才是用比较完整的前端效果,能移动.缩放时间轴,鼠标 ...
- Django REST framework+Vue 打造生鲜电商项目(笔记二)
(转自https://www.cnblogs.com/derek1184405959/p/8768059.html)(有修改) 接下来开始引入django resfulframework,体现它的强大 ...
- Django REST framework+Vue 打造生鲜电商项目(笔记四)
(PS:部分代码和图片来自博客:http://www.cnblogs.com/derek1184405959/p/8813641.html.有增删) 一.用户登录和手机注册 1.drf的token功能 ...
- Django REST framework+Vue 打造生鲜电商项目(笔记三)
(PS:转载自http://www.cnblogs.com/derek1184405959/p/8810591.html 有修改) 一.drf的过滤 (1)添加到app里面 INSTALLED_AP ...
- Django REST framework+Vue 打造生鲜电商项目(笔记十)
(from:https://www.cnblogs.com/derek1184405959/p/8877643.html 有修改) 十三.首页.商品数量.缓存和限速功能开发 首先把pycharm环境 ...
- Django REST framework+Vue 打造生鲜电商项目(笔记九)
(from:http://www.cnblogs.com/derek1184405959/p/8859309.html) 十二.支付宝沙箱环境配置 12.1.创建应用 进入蚂蚁金服开放平台(https ...
随机推荐
- Go语言标准库之log
无论是软件开发的调试阶段还是软件上线之后的运行阶段,日志一直都是非常重要的一个环节,我们也应该养成在程序中记录日志的好习惯. log Go语言内置的log包实现了简单的日志服务.本文介绍了标准库log ...
- 我的MarkDown入门
目录 0.前言 1.软件准备 2.基本语法 2.1斜体&加粗 2.2分级标题 2.3分割线 2.4超链接 2.5列表 2.6引用 2.7插入代码 2.8插入图像 2.9插入表格 2.10目录 ...
- Winform中通过代码设置DevExpress的TextEdit的类型为Numbernic
场景 使用DevExpress的EditText控件时,需要限制其输入类型为数字. 正常来说是窗体上拖拽一个TextEdit,然后在设计窗口点击小三角,选择Change Mask 但是如果说TextE ...
- python+selenium自动化测试——浏览器驱动
selenium控制浏览器需要下载对应版本的驱动,并把下载好的驱动解压然后拷贝到python的安装目录. 1.chrome 驱动对应版本及下载地址;https://npm.taobao.org/mir ...
- Linux 笔记 - 第十三章 Linux 系统日常管理之(三)Linux 系统日志和服务
博客地址:http://www.moonxy.com 一.前言 日志文件记录了系统每天发生的各种各样的事情,比如监测系统状况.排查问题等.作为系统运维人员可以通过日志来检查错误发生的原因,或者受到攻击 ...
- Qt信号槽-原理分析
目录 一.问题 二.Moc 1.变量 2.Q_OBJECT展开后的函数声明 3.自定义信号 三.connect 四.信号触发 1.直连 2.队列连接 五.总结 六.推荐阅读 一.问题 学习Qt有一段时 ...
- Linux线程唤醒与等待
生产者消费者模式在程序设计中出现频率非常高,经常会有线程间通过消息队列或其他共享变量进行交互的场景.而这时就会出现一个问题,消费者如何知道生产者已经生产了数据呢?有的程序会采取消费者循环判断消息队列大 ...
- 我用阿里云的虚拟云主机,也能配置https加密吗?
我用阿里云的虚拟云主机,也能配置https加密吗?答案是YES. 整个过程比想象中还要简单,都是一些基本的配置,虚拟主机 Web托管都可以很容易的搞定https. 首先我们要了解一下,阿里云是怎么支持 ...
- Python学习笔记整理总结【网络编程】【线程/进程/协程/IO多路模型/select/poll/epoll/selector】
一.socket(单链接) 1.socket:应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口.在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在Socke ...
- Android 禁止Edittext弹出系统软键盘 的几种方法
第一种方法:在XML文件下添加: android:focusable="true" android:focusableInTouchMode="true" 第二 ...