Drf框架

一丶API接口

# 为了在团队内部形成共识、防止个人习惯差异引起的混乱,我们需要找到一种大家都觉得很好的接口实现规范,而且这种规范能够让后端写的接口,用途一目了然,减少双方之间的合作成本。

# 目前市面上大部分公司开发人员使用的接口服务架构主要有:restful、rpc。
# restful:翻译成中文,即 资源状态转换
# 1.把后端所有的数据/文件都看成资源
POST http://www.lufei.com/api/students/ 添加学生数据 GET http://www.lufei.com/api/students/ 获取所有学生 DELETE http://www.lufei.com/api/students/<pk> 删除1个学生 GET http://www.lufei.com/api/students/<pk> 获取一个学生

二丶序列化

# api接口开发,最核心最常见的一个过程就是序列化,所谓序列化就是把**数据转换格式**,序列化可以分两个阶段:

### 序列化 :  把我们识别的数据转换成指定的格式提供给别人。
例如:我们在django中获取到的数据默认是模型对象,但是模型对象数据无法直接提供给前端或别的平台使用,所以我们需要把数据进行序列化,变成字符串或者json数据,提供给别人。 ### 反序列化 : 把别人提供的数据转换/还原成我们需要的格式。
例如:前端js提供过来的json数据,对于python而言就是字符串,我们需要进行反序列化换成模型类对象,这样我们才能把数据保存到数据库中。 # 总结:
接收数据[反序列化] 操作数据 响应数据[序列化]

三丶Django Rest Framework

# 核心思想: 缩减编写api接口代码
# 建立在Django基础之上的Web应用开发框架. 可以快速开发的REST API接口应用.
# 在 REST framework 中, 提供了序列化器Serializer的定,帮助我们简化序列化的过程
# 还提供丰富的类视图、扩展类、视图集来简化视图的编写工作.
# REST framework 还提供了:认证 , 权限 ,过滤 ,分页 ,接口文档等功能支持.
# 特点:
提供了定义序列化器Serializer的方法,可以快速根据Django ORM或者其他自动序列化/反序列化
提供丰富的视图类,Mixin扩展类,简化视图的编写
丰富的定制层级:函数视图,类视图,视图集合到自动生成API
多种身份认证和权限认证方式支持: jwt
内置了限流系统
直观的API web界面
插件,

四丶流程

### 序列化器
# 在子应用中穿件seriaizers.py用于保存序列化器 # 创建序列化器类,回头会在试图中被调用
from rest_framework import serializers
from .models import Student class StudentModelSerializer(serializers.ModelSerializer):
class Meta:
model = Student
fields = "__all__" # model 指定序列化器处理的数据字段从模型类Student参考生成
# fields 指明该序列化器包含模型类中的哪些字段 'all' 全字段
### 视图函数
from rest_framework.viewsets import ModelViewSet
from .models import Student
from .serializers import StudentModelSerializer
# Create your views here.
class StudentViewSet(ModelViewSet):
# 查询 模型数据
queryset = Student.objects.all()
# 指定 序列化器类
serializer_class = StudentModelSerializer
# queryset 指名该视图集在查询数据时使用的查询集
# serializer_class 指明该视图在进行序列化反序列化使用的序列化器
### 路由定义
from . import views
from rest_framework.routers import DefaultRouter # 路由列表
urlpatterns = [] router = DefaultRouter() # 可以处理视图的路由器
router.register('students', views.StudentViewSet) # 向路由器中注册视图集 urlpatterns += router.urls # 将路由器中的所以路由信息追到到django的路由列表中

DRF简易了解的更多相关文章

  1. drf之接口规范

    web接口 # 请求工具:postman => https://www.getpostman.com/ # 接口:url链接,通过向链接发生不同的类型请求与数据得到相应的响应数据 # http: ...

  2. 一个简易的drf的项目例子

    luffy_city 1.项目介绍 今日内容:(路飞项目) contentType组件: 路飞学成项目,有课程,学位课(不同的课程字段不一样),价格策略 问题, 如何设计表结构,来表示这种规则 为专题 ...

  3. drf 单表

    ^_^ # [{title,price},{}] 构造的数据结构 简单的FBV/CBV def showbooks(request): # FBV if request.method =='GET': ...

  4. 接口与DRF的安装

    接口 # 接口:url链接,通过向链接发送不同的类型请求与参数得到相应的响应数据​# 1.在视图层书写处理请求的 视图函数# 2.在路由层为视图函数配置 url链接 => 产生接口# 3.前台通 ...

  5. vue 前后端分离 接口及result规范 及drf安装使用方法

    接口 # 接口:url链接,通过向链接发送不同的类型请求与参数得到相应的响应数据​# 1.在视图层书写处理请求的 视图函数# 2.在路由层为视图函数配置 url链接 => 产生接口# 3.前台通 ...

  6. 接口、RESTful规范、DRF

    接口 #接口:url连接,通过向链接发送不同的类型请求与参数得到相应的响应数据 #1.在视图书写处理请求的 视图函数 #2.在路由层为视图函数配置 url链接=>产生接口 #3.前台通过ajax ...

  7. 一,DRF入门规范

    一 Web应用模式 在开发Web应用中,有两种应用模式: 1.1 前后端不分离 1.2 前后端分离 二 API接口 为了在团队内部形成共识.防止个人习惯差异引起的混乱,我们需要找到一种大家都觉得很好的 ...

  8. .NET里简易实现AOP

    .NET里简易实现AOP 前言 在MVC的过滤器章节中对于过滤器的使用就是AOP的一个实现了吧,时常在工作学习中遇到AOP对于它的运用可以说是很熟练了,就是没想过如果自己来实现的话是怎么实现的,性子比 ...

  9. 在.Net中实现自己的简易AOP

    RealProxy基本代理类 RealProxy类提供代理的基本功能.这个类中有一个GetTransparentProxy方法,此方法返回当前代理实例的透明代理.这是我们AOP实现的主要依赖. 新建一 ...

随机推荐

  1. 在 VS Code 中遇到的一些问题

    1.在安装时未配置右键快捷菜单,想重新添加 最简单的就是重新安装一遍,在安装过程中选择好. 其次可以通过以下注册表脚本导入(保存为 .reg 文件),注意因为有中文字符,需要使用记事本保存为 ANSI ...

  2. SQLi-LABS Page-4 (Challenges) Less-54-Less-65

    Less-54 union - 1 http://10.10.202.112/sqli/Less-54?id=-1' union select 1,2,group_concat(table_name) ...

  3. 上传App Store 被拒问题及解决方案总结

    最近公司比较忙,一直忙着写代码做新的应用,一连上线了几个应用,我们也是忙得焦头烂额的,都没时间做总结,今天趁APP审核期间,总结一下近期上传App Store遇到的一些问题和解决方法,以便以后查阅. ...

  4. Linux 查找目录下大于*M的文件

    1. 查找指定文件夹下等于1M的文件 find ./ -size 1M | wc -l 2. 查找指定文件夹下大于1M的文件 find ./target_path -size +1M | wc -l

  5. C学习笔记(6)--- 共用体,位域深入

    1.共用体(Union): 共用体是一种特殊的数据类型,允许您在相同的内存位置存储不同的数据类型.您可以定义一个带有多成员的共用体,但是任何时候只能有一个成员带有值.共用体提供了一种使用相同的内存位置 ...

  6. bootstrap如何去除自带的样式----导航栏中的菜单实现平滑的过渡到对应的菜单区域-------动态跟换模态框中的内容

    问题1:如何去除bootstap中css中自带的overflow:hidden这个样式 今天遇见在bootstap中轮播图上的  附带图  片不能够显示出来,图片始终有一部分的高度  被隐藏了 后来通 ...

  7. for循环结构

    循环结构: 在程序当中总有一些需要反复/重复的执行的代码,假设没有循环结构,那么这段需要重复知心的需要重复执行的代码自然是需要重复编写的,代码无法得到重复使用.所以多数变成语言都是支持循环结构的.将来 ...

  8. luoguP3017Brownie Slicing

    https://www.luogu.org/problem/P3017 题意 给你一个蛋糕,R行C列 ,每个点有巧克力碎屑(如下) 1 2 2 1 3 1 1 1 2 0 1 3 1 1 1 1 1 ...

  9. (day53)五、模型层(ORM)、settings文件配置

    目录 一.settings配置 (一)测试文件配置 (二)查看对应sql语句 二.模型表数据的增删改查 (一)创建数据 (1)create方法 (2)利用对象的绑定方法 (二)修改数据 (1)利用qu ...

  10. 设计模式-Builder模式(创建型模式)

    //以下代码来源: 设计模式精解-GoF 23种设计模式解析附C++实现源码 //Product.h #pragma once class Product { public: Product(); ~ ...