Django_Rest_Framework 官网地址
https://www.django-rest-framework.org/
开个小差:
Django : drf老弟?
drf:怎么了江狗兄 ...
Django :听说隔壁的fastapi一天能写十几个接口,你能行吗?
系统通知:drf退出群聊...
哈哈哈确实如此没得比。。。但是djangorestframework还是在python开发中占据主导地位的。是不可撼动的存在。yyds!!!
引言
使用Django Rest Framework之前我们要先知道,它是什么,能干什么用?
引用官方一句话:Django REST框架是用于构建Web API的功能强大且灵活的工具包。
那为什么要使用Rest Framework?
Django REST Framework可以在Django的基础上迅速实现API,并且自身还带有WEB的测试页面,可以方便的测试自己的API。
Web应用模式
我们开发django项目时,经常会接触的接口这个东西,那么django-web开发接口是怎样呢?
总体上就是:
web应用模式分两种:
前后端不分离
在前后端不分离的引用模式中,前端页面看到的效果都是由后端控制的,由后端页面渲染或者重定向,也就是后端需要控制前端的展示,前端与后端的耦合度很高,这种模式比较适合纯网页应用,但是后端对接APP时,App可能并不需要后端返回一个HTML网页,仅仅是数据本身,所以后端原本返回网页的接口不在适用前端APP应用,为了对接APP后端嗨需再开发一套接口。
这个可以看我之前写的DJango博客就可以知道,每次返回时都是使用render 或者redirect来返回的,需要带上HTML页面和参数
前后端分离
在前后端分离的应用模式中,后端仅返回前端所需要的数据,不再渲染HTML页面,不再控制前端的效果,只要前端用户看到什么效果,从后端请求的数据如何加载到前端中,都由前端自己决定,网页有网页自己的处理方式,APP有APP的处理方式,但无论哪种前端所需要的数据基本相同,后端仅需开发一套逻辑对外提供数据即可,在前后端分离的应用模式中,前端与后端的耦合度相对较低
在前后端分离的应用模式中,我们通常将后端开发的每一视图都成为一个接口,或者API,前端通过访问接口来对数据进行增删改查
如果项目的需求是后一种情况的话,那么就可以用到Django Rest Framework了。
下载restframework
pip install djangorestframework
下载完成后打开之前创建的web项目中在settings.py文件中的INSTALLED_APPS参数列表中进行加入rest_framework:
INSTALLED_APPS = [
....
"rest_framework"
]

在引号里面输入re后会出现提示、如果有rest_framework就选择即可、没有出现可能你没有完全安装成功
视图组件
视图就是写API的业务逻辑的模块、与django视图本质是一样的
类基础视图(APIView)
DRF不同于django常规的view类,他有如下几点优点:
提供了更好用的request对象,不同于普通的django HttpRequest更好用。
封装了Response对象,代替了原有的django HttpResponse,视图将管理内容协商并设置正确的渲染器的响应。
任何APIException异常将会被捕捉,并做适当的响应。
drf本身就封装了很多视图类、可以解决任何业务需求问题、这里我们仅介绍基础的视图类就可以了足以完成我们所有功能实现
一个简单的示例:
from rest_framework.views import APIView
# API基础视图类
from rest_framework.response import Response
# API数据响应类
from rest_framework.renderers import JSONRenderer
# 渲染器类
class ListUser(APIView):
renderer_classes = [JSONRenderer]
#进行前端渲染的是json,如果不设置浏览器会启动默认的drf调试模板
# 请求方法
def get(self,request):
# 定义数据容器、是一个字典类型
context = {
"code":1,
"message":"接口服务正常"
}
return Response(context)
#Response方法会自动进行将Python字典类型数据进行序列化、变成一个json类型
urls.py配置
from django.contrib import admin
from django.urls import path
from user.views import test_list,test_case #导入视图模块
from user.views import ListUser
urlpatterns = [
path('admin/', admin.site.urls), #后台系统的url地址一般生产都会进行修改该路径为了安全起见
path('test/', test_list),#直接输入对应的方法名称、无需带括号
path('test/<name>/', test_case),
path('api/test', ListUser.as_view(),name="测试接口"), #进行映射API视图关系
]
启动django服务

是不是很熟悉的味道?证明接口完成了。浏览器无法进行发送post请求需要使用接口测试工具了、请安装postman
API渲染器
我们把刚刚上面的代码中一下内容注释掉、然后再启动服务、浏览器访问
renderer_classes = [JSONRenderer]
浏览器访问

如果不想进行看到该模板就在每个API视图类中增加
renderer_classes = [JSONRenderer]
就会变成这样

拒绝白嫖,不给钱就点赞分享、关注、在看吧!!!关注公众号更多精彩教学分享尽在公众号中!!!




