首页后端开发Python【Django-DRF】使用md笔记 0基础到高手. 第(4)篇:使用Django-DRF进行开发

【Django-DRF】使用md笔记 0基础到高手. 第(4)篇:使用Django-DRF进行开发

时间2023-12-06 17:17:02发布访客分类Python浏览773
导读:本文从分析现在流行的前后端分离Web应用模式说起,然后介绍如何设计REST API,通过使用Django来实现一个REST API为例,明确后端开发REST API要做的最核心工作,然后介绍Django REST framework能帮助我...

本文从分析现在流行的前后端分离Web应用模式说起,然后介绍如何设计REST API,通过使用Django来实现一个REST API为例,明确后端开发REST API要做的最核心工作,然后介绍Django REST framework能帮助我们简化开发REST API的工作。

完整版笔记直接地址: 请移步这里

共 5章,24 子模块,总计 1.78w 字


引入Django REST framework

在本文中,我们要大家介绍为什么学习Django REST framework,它能帮助我们做哪些事情。

我们从分析现在流行的前后端分离Web应用模式说起,然后介绍如何设计REST API,通过使用Django来实现一个REST API为例,明确后端开发REST API要做的最核心工作,然后介绍Django REST framework能帮助我们简化开发REST API的工作。

Django REST framework 简介

  1. 在序列化与反序列化时,虽然操作的数据不尽相同,但是执行的过程却是相似的,也就是说这部分代码是可以复用简化编写的。
  2. 在开发REST API的视图中,虽然每个视图具体操作的数据不同,但增、删、改、查的实现流程基本套路化,所以这部分代码也是可以复用简化编写的:
* **增** :校验请求数据 ->
     执行反序列化过程 ->
     保存数据库 ->
     将保存的对象序列化并返回
* **删** :判断要删除的数据是否存在 ->
     执行数据库删除
* **改** :判断要修改的数据是否存在 ->
     校验请求的数据 ->
     执行反序列化过程 ->
     保存数据库 ->
     将保存的对象序列化并返回
* **查** :查询数据库 ->
     将数据序列化并返回

Django REST framework 可以帮助我们简化上述两部分的代码编写,大大提高REST API的开发速度。

认识Django REST framework

drf_logodrf_logo

Django REST framework 框架是一个用于构建Web API 的强大而又灵活的工具。

通常简称为DRF框架 或 REST framework。

DRF框架是建立在Django框架基础之上,由Tom Christie大牛二次开发的开源项目。

特点

  • 提供了定义序列化器Serializer的方法,可以快速根据 Django ORM 或者其它库自动序列化/反序列化;
  • 提供了丰富的类视图、Mixin扩展类,简化视图的编写;
  • 丰富的定制层级:函数视图、类视图、视图集合到自动生成 API,满足各种需要;
  • 多种身份认证和权限认证方式的支持;
  • 内置了限流系统;
  • 直观的 API web 界面;
  • 可扩展性,插件丰富

DRF工程搭建

环境安装与配置

DRF需要以下依赖:

  • Python
  • Django

DRF 是以Django扩展应用的方式提供的,所以我们可以直接利用已有的Django环境而无需从新创建。(若没有Django环境,需要先创建环境安装Django)

1. 安装DRF

pip install djangorestframework

2. 添加rest_framework应用

我们利用在Django框架学习中创建的demo工程,在 settings.pyINSTALLED_APPS 中添加'rest_framework'。

INSTALLED_APPS = [ ... 'rest_framework', ]

接下来就可以使用DRF进行开发了。

见识DRF的魅力

我们仍以在学习Django框架时使用的图书英雄为案例,使用Django REST framework快速实现图书的REST API。

1. 创建序列化器

在booktest应用中新建serializers.py用于保存该应用的序列化器。

创建一个BookInfoSerializer用于序列化与反序列化。

class BookInfoSerializer(serializers.ModelSerializer): """图书数据序列化器""" class Meta: model = BookInfo fields = 'all'

  • model 指明该序列化器处理的数据字段从模型类BookInfo参考生成
  • fields 指明该序列化器包含模型类中的哪些字段,'all'指明包含所有字段

2. 编写视图

在booktest应用的views.py中创建视图BookInfoViewSet,这是一个视图集合。

from rest_framework.viewsets import ModelViewSet from .serializers import BookInfoSerializer from .models import BookInfo

class BookInfoViewSet(ModelViewSet):
    queryset = BookInfo.objects.all()
    serializer_class = BookInfoSerializer
  • queryset 指明该视图集在查询数据时使用的查询集
  • serializer_class 指明该视图在进行序列化或反序列化时使用的序列化器

3. 定义路由

在booktest应用的urls.py中定义路由信息。

from . import views from rest_framework.routers import DefaultRouter

urlpatterns = [
    ...
]
​
router = DefaultRouter()  # 可以处理视图的路由器
router.register('books', views.BookInfoViewSet, name='books')  # 向路由器中注册视图集
​
urlpatterns += router.urls  # 将路由器中的所以路由信息追到到django的路由列表中

4. 运行测试

运行当前程序(与运行Django一样)

python manage.py runserver

在浏览器中输入网址127.0.0.1:8000,可以看到DRF提供的API Web浏览页面:

图书接口Web浏览页面图书接口Web浏览页面

1)点击链接127.0.0.1:8000/books/ 可以访问 获 取所有数据的接口,呈现如下页面:

查询所有图书信息1查询所有图书信息1查询所有图书信息2查询所有图书信息2

2)在页面底下表单部分填写图书信息,可以访问 添 加新图书的接口,保存新书:

保存新图书保存新图书

点击POST后,返回如下页面信息:

保存图书返回信息保存图书返回信息

3)在浏览器中输入网址127.0.0.1:8000/books/1/,可以访问 获 取单一图书信息的接口(id为1的图书),呈现如下页面

4)在页面底部表单中填写图书信息,可以访问 修 改图书的接口

修改图书信息修改图书信息

点击PUT,返回如下页面信息:

修改图书返回信息修改图书返回信息

5)点击DELETE按钮,可以访问 删 除图书的接口

删除图书删除图书

返回,如下页面:

删除图书返回信息删除图书返回信息

至此,是不是发现Django REST framework很好用!

Serializer序列化器

序列化器的作用:

  1. 进 行数据的校验
  2. 对 数据对象进行转换

未完待续 下一期下一章

完整笔记请看文章开头

点击关注作者,阅读全文

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: 【Django-DRF】使用md笔记 0基础到高手. 第(4)篇:使用Django-DRF进行开发
本文地址: https://pptw.com/jishu/570800.html
填补Excel中每日的日期并将缺失日期的属性值设置为0:Python Python 算法高级篇:最小生成树算法的优化与应用

游客 回复需填写必要信息