django框架-rest framework+vue_20191201

django框架-rest framework+vue

  • 这两个非常的重要,我需要一周的时间来刚清楚这个,
  • restful协议,这个先不讲,后面讲,
  • 根据这个restful有很多的框架,我们现在要学习的rest framework,是django下面的框架,这就是根据restful协议开发的,

restful协议

  • ---- 一切皆是资源,操作只是请求方式
  • ######################################################
  • ----book表增删改查
  • /books/ books
  • /books/add/ addbook
  • /books/(\d+)/change/ changebook
  • /books/(\d+)/delete/ delbook
  • 这是没有学习restful协议之前,我们设计的url和视图
  • 学习了之后,就不能使用这种方式了,用下面的这种方式
  • #########################################################
  • ----book表增删改查
  • /books/ -----get books ----- 返回当前所有数据
  • /books/ -----post books ----- 返回提交数据
  • /books/(\d+)-----get bookdetail ----- 返回当前查看的单条数据
  • /books/(\d+)-----put bookdetail ----- 返回更新数据
  • /books/(\d+)-----delete bookdetail ----- 返回空
  • ######################################################
  • 设计
  • class Books(View):
  •   def get(self,request):
  •     pass # 查看所有书籍
  •   def post(self,request):
  •     pass # 添加书籍
  • 这个里面就没有put请求,因为你不能使用更新所有的书籍,
  • class BooksDetail(View):
  •   def get(self,request,id):
  •     pass # 查看具体书籍
  •   def put(self,request,id):
  •     pass # 更新某本书籍
  •   def delete(self,request,id):
  •     pass # 删除某本书籍
  • 上面这些不是随便写的,这是一种规范,根据restful协议的规范,
  • 所以这样改造之后,你在看url,里面就没有任何动词了,动作都以请求方式的来标识了,这就是一切皆资源,这里面没有动词,

rest framework

  • rest framework针对的就是json数据,
  • rest framework就是django的一个app,需要下载,pip install djangorestframework
  • 下载成功了,

rest framework序列化类

  • 新建项目,
  • 添加数据库模型,
  • 迁移数据库,这一步我有点没有看到,数据库到哪里去了,不是用的mysql
  • 好了现在有四张表,出版社,书本,作者,
  • ########################################################
  • 问题:
  • 现在的问题是我请求出版社的所有内容,如何通过json格式返回给前端??
  • ############################################################
  • 通过数据库查询出来的结果直接返回给前端,这是一个queryset对象,
  • json.dum(publisher_data)这样会报错的,
  • 因为queryset对象不能被序列化,
  • 你可以把结果进行list()强转,然后就不会序列化报错了,这是一种方式,
  • 也可以把数据循环读取进入列表,
  • ########################################################
  • # 方式3:
  • # from django.core import serializers  #这是django自带的序列化组件,和rest framework还没有关系,
  • # ret=serializers.serialize("json",publish_list)
  • 这种序列化是比较好的,
  • ###############################################
  • 还有一种方式就是使用rest framework序列化类
  • 使用这个类,需要定义个类,
  • from rest_framework import serializers
  • class PublishSerializers(serializers.Serializer):
  •   name = serializers.CharField()
  •   email = serializers.CharField()
  • 为什么会有这个类,是为了给queryset序列化用的,
  • # 序列组件
  • publish_list = Publish.objects.all()
  • ps = PublishModelSerializers(publish_list, many=True)
  • ps这个就是序列化之后的内容,ps.data就是我们要的内容了,
  • return Response(ps.data)

request.post的玩法,

  • 这个request是在from django.core.handlers.wsgi import WSGIRequest
  • 这个就是之前使用的request.POST,
  • 这是django原生的request是怎么玩的,
  • ########################################
  • 现在看看rest framework是怎么玩的,
  • from rest_framework.views import APIView
  • APIView继承了view,这个里面重写了一些父类的方法,就不会去找view里面的方法了,如果apiviews里面没有 ,就会去父类去找,

猜你喜欢

转载自www.cnblogs.com/andy0816/p/11966248.html
今日推荐