首页 > 其他分享 >drf(djangorestframewor)-01

drf(djangorestframewor)-01

时间:2022-09-23 20:35:41浏览次数:60  
标签:01 http 请求 models request 接口 import djangorestframewor drf

目录

前后端开发模式

1.前后端结合模式----全栈
  后端人员根据前端写好的静态html页面 套用模板语法
  存在问题:前端页面嵌入了很多后端代码 一旦后续更换语言 前端可能要重新写 增大成本
2.前后端分离模式
  前端:前端人员负责写前端 使用mock数据
  后端:后端人员写(API接口) 使用postman接口测试工具测试
  前后端数据进行联调项目
  2.1 客户端和服务端采用RESTFUL API的交互方式进行交互
  2.2 前后端代码库分离
  2.3 并行开发
3.前后端分离优点:
  提升开发效率
  完美应对复杂多变的前端需求
  增强代码的可维护性
  为优质产品打造精益团队

API接口

1.API接口:通过网络 规定了前后台信息交互规则的url链接(前后台信息交互的媒介)
2.API接口所需数据:
  url:长得像返回数据的url链接
       https://api.map.baidu.com/place/v2/search
       包含版本数据 
  请求方式:get post put patch delete
	   采用get方式请求上方接口
  请求参数:json或xml格式的key-value类型数据
		 ak:6E823f587c95f0148c19993539b99295
          region:上海
          query:肯德基
          output:json
  响应结果:json或xml格式的数据 

接口测试工具postman

1.原因:后端人员将API接口写好后 需要测试 无法在浏览器中进行测试 需要借助测试软件
2.种类:测试软件很有多 如 postman、postwoman、PAW-Mac、PAW、SoapUI、Katalon Studio、JMeter、Karter DSL
3.本质:模拟发送http请求
4.postman官方网址:https://www.postman.com/downloads/

restful规范

1.REST:全称 Representational State Transfer(表征性状态转移) 2000年首次出现在Roy Fielding
2.RESful:定义Web API接口的设计风格 尤其使用于前后端分离的应用模式种
3.RESful规范:
  3.1 数据的安全保障:url链接一般采用https协议进行传输(https=http+ssl/tsl(http协议的基础上通过传输加密和身份认证))
  3.2 接口中带api关键词
  3.3 多数据版本数据共存 一个接口可能有多个版本 url链接中标识版本
      如 版本的更新(旧版本也需要存在)
  3.4 数据(即资源):均使用名词(可使用复数) 接口尽量使用名词
  3.5 资源操作由请求方式决定
      获取数据:get请求
      删除数据:delete请求
      新增数据:post请求
      修改数据:put patch请求
      注:请求地址一样 通过请求方式决定对资源进行什么操作
  3.6 url地址中带过滤参数
  3.7 响应状态码
      http状态码:
            1xx:请求正在处理
                 100 继续
                 101 切换协议
            2xx:请求 处理成功
                 200 请求成功
                 201 已创建
            3xx:重定向
                 301 永久移动
                 302 临时移动
            4xx:客户端错误
            	 403 服务器理解请求 但拒绝(缺携带的标志数据)
                 404 查询的资源不存在
            5xx:服务端错误
            	 500 服务器内部错误
                  501 服务器不支持请求的功能
        网址:http://tools.jb51.net/table/http_status_code
      响应体中写状态码:公司规定 如在响应体中写状态码{code:100}
   3.8 返回错误信息:响应体中携带错误信息{code:100,msg:成功}
   3.9 返回结果 针对不同操作 服务器向用户返回的结果应该符合以下规范
       GET/collection:返回资源对象的列表(数组)[{},{}]
       GET/collection/resource:返回单个资源对象{}
       POST/collection:返回新生成的资源对象{}
       PUT/collection/resource:返回完整的资源对象
       PATCH/collection/resource:返回完整的资源对象{}
       DELETE/collection/resource:返回一个空文档
      数据获取类型:获取所有
        		  获取单条
                   新增数据
                   修改数据
                   删除数据
   3.10 响应中带链接    

序列化和反序列化

1.序列化:我们识别数据转换为指定的格式提供给别人
2.反序列化:将别人提供的数据转化为我们所需的数据格式

djangorestframework快速使用

1.使用django这个web框架 开发前后端分离项目(模板渲染) 写接口
  1.1 JsonResponse返回
  1.2 djangorestframewor可以快速写出符合的restful规范的接口
2.接口数据处理
  2.1 获取所有:get     http://127.0.0.1:8000/books
  2.2 获取单个:get	   http://127.0.0.1:8000/books/1
  2.3 新增一条:post     http://127.0.0.1:8000/books/(最后必须加/)
  2.4 修改一条:put/patch  http://127.0.0.1:8000/books/1
  2.5 删除一条:delete     http://127.0.0.1:8000/books/1
3.第三方:安装 pip3 install djangorestframework
4.代码操作:books表数据的增删改查
urls.py
    from django.urls import path
    from app01 import views
    from rest_framework.routers import SimpleRouter
    router = SimpleRouter()
    router.register('books', views.BookView)
    urlpatterns = [
        path('admin/', admin.site.urls),
    ]
    urlpatterns += router.urls
views.py
    from app01 import models
    from rest_framework.viewsets import ModelViewSet
    from app01 import serializer

    class BookView(ModelViewSet):
        queryset = models.Books.objects.all()
        serializer_class = serializer.BookSerializer
 models.py
    from django.db import models

    class Books(models.Model):
        name = models.CharField(max_length=32)
        price = models.CharField(max_length=32)
        publish = models.CharField(max_length=32)
 serializers.py
    from rest_framework import serializers
    from app01 import models

    class BookSerializer(serializers.ModelSerializer):
        class Meta:
            model = models.Books
            fields = '__all__'

cbv源码分析

1.路由匹配:
  第一个参数:路径 
  第二个参数:视图函数的内存地址(执行as_view类方法 执行完后是函数的内存地址)
    urlpatterns = [
        path('test/', views.TestView.as_view())
    ]
2.写基于类的视图(cbv):
  from django.views import View
  class TestView(View):
    def get(self, request):
        return HttpResponse('1234')
3.查找类的as_view方法
  先从TestView类中查找  无
  从继承的父类View中查找(as_view是绑定给类的方法) 
  @classonlymethod
    def as_view(cls, **initkwargs):
        def view(request, *args, **kwargs):
            return self.dispatch(request, *args, **kwargs)
        return view
4.发送请求 路由匹配成功 执行view(request)
  执行dispatch方法
  先从TestView类中查找  无
  从继承的父类View中查找(dispatch方法)
   def dispatch(self, request, *args, **kwargs):
        if request.method.lower() in self.http_method_names:
            handler = getattr(self, request.method.lower(), self.http_method_not_allowed)
        else:
            handler = self.http_method_not_allowed
        return handler(request, *args, **kwargs)
 5.request.method.lower()获取请求类型转换为小写 再判断在不在请求类型的数据中
   通过反射getattr方法获取
   根据请求类型 查找方法 执行
   如get请求
     class TestView(View):
        def get(self, request):
            return HttpResponse('1234')

标签:01,http,请求,models,request,接口,import,djangorestframewor,drf
From: https://www.cnblogs.com/040714zq/p/16723900.html

相关文章

  • 做题记录整理dp8 P5665 [CSP-S2019] 划分(2022/9/23)
    P5665[CSP-S2019]划分这题其实并不是题单的第八题,但我现在一做完题目马上就想来(测出题人的码)整理题目因为这题是真的恶心首先朴素的n三次方dp,枚举上一个端点,以及上上......
  • 今日内容 API接口和drf的使用
    前后端开发模式详细见博客链接:https://www.cnblogs.com/liuqingzheng/p/10900502.html补充:前后端混合开发使用模板语法渲染模板后端人员要通过前端写好的html页面......
  • 20201320第四周学习笔记
    第七章文件操作一、文件操作级别1、硬件级别操作:硬件级别的文件操作包括:-fdisk:将硬盘、u盘或SDC盘分区。-mkfs:格式化磁盘分区,为系统做好准备。-fsck:检查和维修系统。-......
  • 【2022-09-23】DRF入门到入土(一)
    drf入门规范一、web应用模式web应用模式分为两种,一种是前后端不分离,一种是前后端分离前后端不分离前后端分离二、API接口为了在团队内部形成共识、防止......
  • windows server 2012 中怎么进行NIC组合
    NIC组合就是把同一台服务器上的多个物理网卡通过软件绑定成一个虚拟的网卡,也就是说,对于外部网络而言,这台服务器只有一个可见的网卡。对于任何应用程序,以及本服务器所在的网......
  • 前后端分离 drf之一
    API接口前后端分离的开发模式:客户端和服务端采用restfulAPI的交互方式进行交互前后端代码库分离,前端代码可以进行mock测试能够独立开发和测试后端则用postman接口测......
  • drf学习笔记
    今日内容概要前后端开发模式API接口接口测试工具postmanrestful规范序列化和反序列化djangorestframework快速使用cbv源码分析今日内容详细前后端开发模式前后......
  • 01分数规划
    语文不好,这个可能是一个题单注:按字典序排序,而不是难度想学可以去oi-wiki,讲的很好CF11EForward,march!代码#include<cstdio>#include<cctype>#include......
  • P5089 [eJOI2018] 元素周期表 题解
    \(Preface\)主要是想刷点咕值然后就写了一写。。。顺便扔到博客园这边。题解题目传送门这道题嘛..主要还是找性质推规律。拿到题,第一眼:噢噢爆搜啊。第二眼:噢噢贪心啊......
  • HR-901FH卫星信号安全防护装置-授时安全防护装置
    HR-901FH卫星信号安全防护装置-授时安全防护装置HR-901FH卫星信号安全防护装置-授时安全防护装置京准电子科技官微——ahjzsz产品简介HR-901FH卫星时空防护装置基于......