DRF安装与使用
DRF安装与使用
一、web应用模式(前后端不分离&前后端分离)
在开发web应用中,有两种应用模式。前后端不分离,如BBS项目、前后端分离,后端人员只写后端一点都不需要动前端代码、只负责写接口
前后端不分离:客户端看到的内容和所有页面效果都是服务端提供的


前后端分离:前端只负责页面(HTML、CSS、js)单独分离到一个服务端,Python服务端只需要返回数据即可


二、API接口
1、API接口概念讲解
API接口即应用程序编程接口(Applicant Programming Interface),应用程序对外提供了一个操作数据的入口,这个入口可以是函数或类方法也可以是一个URL地址或一个网址。当客户端调用这个入口、应用程序则会执行相应的代码操作、给客户端完成对应的功能。这样可以减小前后端之间的合作成本,简单的可以理解的话API接口就是前后端信息交互的媒介
2.IPA接口测试工具postman
作为后端开发写完的代码一定要自己测试一下,哪怕是动了一个逗号也要亲自测试一下,但是问题又来了,在哪里测试呢?哈哈这还不简单!浏览器呀它是它是天然的测试工具,但是哥们儿!它功能不全只能测试get请求,其他的还是需要自己写代码才能实现。所以咱就有了专门用来测试的工具postman,下载安装也相当方便,官网下载直接双击安装即可。



3.RESTful API规范

REST全称为Representational State Transfer即表述性状态转移,RESTful是一种专门为web开发而定义API接口的设计风格、尤其是适用于前后端分离的应用模式中。这种风格的理念是后端开发的任务就是提供数据、对外提供的是数据资源的访问接口、所以咋定义接口时客户端访问的URL路径就表示这种要操作的数据资源。而对于数据资源分别使用post、get、delete、update等请求动作来表达对数据的增删改查。RESTful规范是一种通用规范、不限制语言和开发框架的使用。因此、我们当然可以使用任何一门编程语言、任何框架都可以实现RESTful规范的API接口。
4.幂等性
接口实现过程中、会存在幂等性,所谓的幂等性通过客户端发起多次同样的请求时,是否对于服务端里面的资源产生不同的结果来判断的。如果多次请求结果一样则是幂等性接口,反之非幂等性接口。
| 请求方式 | 是否幂等 | 是否安全 |
|---|---|---|
| GET | 幂等 | 安全 |
| POST | 不幂等 | 不安全 |
| DELETE | 幂等 | 不安全 |
| PATCH | 幂等 | 不安全 |
5.序列化
API接口开发最核心最常见的一个代码编写过程就是序列化,所谓的序列化就是转换数据格式,其有两个阶段,一是序列化:把后端的数据编程字符串或者json数据提供给别人、二是反序列化:前端js提供的数据是json格式数据,对于Python而言json就是字符串需要反序列化成字典、将字典转换成模型对象,这样才能把数据保存到数据库中

三、DRF框架

1.DRF定义
Django REST framework是一个在Django基础上的web应用开发框架、可以快速开发REST API接口应用。在REST framework中,提供了序列化器Serialzier的定义,可以帮助我们简化序列化与反序列化的过程,而且还封装了丰富的类视图、扩展类、视图集来简化视图的编写工作。REST framework还提供了认证、权限、限流、过滤、分页、接口文档等功能支持。REST framework也提供了一个API的web可视化界面来方便查看测试接口。
2.DRF的特点
- 提供了定义序列化器Serializer的方法
- 提供了丰富的类视图、扩展类、简化视图编写
- 丰富的定制层级:函数视图、类视图、视图集到自动生成API
- 提供了认证、权限、限流、过滤、分页等功能
- 内置了限流系统
- 具有可视化API web界面
- 具有可扩展性、而且插件丰富
3.安装DRF前提
- Python解释器版本要高于3.5以上
- Python解释器要具备pymysql第三方模块
- Django框架版本要高于2.2以上
4.DRF的安装
pip install djangorestframework -i https://pypi.douban.com/simple
5.DRF基本使用
该框架只能在Django框架的基础上使用、所以需要先创建Django框架项目
# 在settings.py文件中注册
# Application definition
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'app01.apps.App01Config',
'rest_framework', # 在这里添加即可
]
# 在urls.py文件中开设路由
from django.contrib import admin
from django.urls import path
from app01 import views
urlpatterns = [
path('admin/', admin.site.urls),
path('', views.Index.as_view()), # 开设的路由
]
# 在views.py文件中写简单的视图类 目的是验证drf框架是否安装成功
from django.shortcuts import render
from rest_framework.views import APIView
from rest_framework.response import Response
# Create your views here.
class Index(APIView):
def get(self, request, *args, **kwargs):
return Response({'name':'almira'})
如下图就说明咱的drf安装成功了!!!

DRF安装与使用的更多相关文章
- drf安装与APIView初步分析
drf安装 1. pip install djangorestframework 2. 在settings文件中注册app : INSTALLED_APPS = [..., 'rest_framewo ...
- vue 前后端分离 接口及result规范 及drf安装使用方法
接口 # 接口:url链接,通过向链接发送不同的类型请求与参数得到相应的响应数据# 1.在视图层书写处理请求的 视图函数# 2.在路由层为视图函数配置 url链接 => 产生接口# 3.前台通 ...
- django drf安装和doc生成
1.打开drf官网https://www.django-rest-framework.org/,把相关的包pip install 2.INSTALLED_APPS添加drf 3.url配置 4.tes ...
- Django框架深入了解_01(Django请求生命周期、开发模式、cbv源码分析、restful规范、跨域、drf的安装及源码初识)
一.Django请求生命周期: 前端发出请求到后端,通过Django处理.响应返回给前端相关结果的过程 先进入实现了wsgi协议的web服务器--->进入django中间件--->路由f分 ...
- 接口与DRF的安装
接口 # 接口:url链接,通过向链接发送不同的类型请求与参数得到相应的响应数据# 1.在视图层书写处理请求的 视图函数# 2.在路由层为视图函数配置 url链接 => 产生接口# 3.前台通 ...
- drf(djangorestframework)
一.django restful_framework 核心思想: 缩减编写api接口的代码 Django REST framework是一个建立在Django基础之上的Web 应用开发框架,可以快速的 ...
- django 学习之DRF (一)
Django框架基础DRF-01 前后端分离介绍 1.前后端不分离图解 2.前后端分离图解 3.为什么要学习DRF DRF可以帮助我们开发者快速的开发⼀个依托于Django的前后后端分离 ...
- drf之接口规范
web接口 # 请求工具:postman => https://www.getpostman.com/ # 接口:url链接,通过向链接发生不同的类型请求与数据得到相应的响应数据 # http: ...
- DRF概述
目录 一. REST 1. 什么是编程? 2. 什么是REST? 二. 知识准备 1. CBV(class based view) 2. 类方法 classmethod和classonlymethod ...
- 一.前后端分离及drf实现序列化的原理
为什么要进行前后端分离 可pc.app.pad多端适应 SPA开发模式的流行--单页web应用(只有一html页面) 可实现前后端开发职责清(不分离时,前端是通过后端给的变量并渲染出来方式拿到数据! ...
随机推荐
- JavaScript进阶(Learning Records)
背景:对JavaScript的深入学习 参考:<JavaScript高级程序设计><冴羽 JavaScript 深入> 从原型到原型链 prototype prototype是 ...
- vulnhub靶场之ICA: 1
准备: 攻击机:虚拟机kali.本机win10. 靶机:ICA: 1,网段地址我这里设置的桥接,所以与本机电脑在同一网段,下载地址:https://download.vulnhub.com/ica/i ...
- 基于docker安装jumpserver
以下配置均在一台ubuntu上实现 # 生成宿主机Mysql配置文件,便于docker内容器使用 [root@ubuntu2004 ~]#mkdir -p /etc/mysql/mysql.conf. ...
- React 函数组件
React 函数组件 1.定义方式 React 函数组件是指使用函数方法定义的组件. 定义方式:与函数的定义方式相同,需要将内容 return 出来,需要注意的是最外层只有一个标签或者使用<&g ...
- 【深入浅出 Yarn 架构与实现】1-1 设计理念与基本架构
一.Yarn 产生的背景 Hadoop2 之前是由 HDFS 和 MR 组成的,HDFS 负责存储,MR 负责计算. 一)MRv1 的问题 耦合度高:MR 中的 jobTracker 同时负责资源管理 ...
- Excel常用需求
常用数据统计格式 外列表套内列表 [['name1','age1'],['name2','age2'],['name3','age3']] 外列表套内字典 [{'name':'xie','score' ...
- LoadRunner11脚本小技能之添加请求头+定义变量+响应内容乱码转换打印+事务拆分
一.添加请求头 存在一些接口,发送请求时需要进行权限验证.登录验证(不加请求头时运行脚本,接口可能会报401等等),所以需要在脚本中给对应请求添加请求头.注意:请求头需在请求前添加,包含url类.su ...
- 2022春每日一题:Day 28
题目:最大上升子序列和 就是最长上升子序列的改版,贡献由1改为a[i]其他全部不变 代码: #include <cstdio> #include <cstdlib> #incl ...
- django 多 APP urls的实现
项目下urls.py 引入admin from django.contrib import admin 引入path,include from django.urls import path,incl ...
- 9 STL-queue
重新系统学习c++语言,并将学习过程中的知识在这里抄录.总结.沉淀.同时希望对刷到的朋友有所帮助,一起加油哦! 生命就像一朵花,要拼尽全力绽放!死磕自个儿,身心愉悦! 写在前面,本篇章主要介绍S ...