drf学习(代码片段)

ghostant ghostant     2023-04-17     301

关键词:

DRF框架知识总览

'''
1.什么是接口(api):
    什么是接口
    接口文档
    接口规范

2.FBV => CBV:Function|Class Base View
    CBV的请求生命周期
    CBV比FBV的优势

3.drf框架的基础视图类
    APIView:请求模块、解析模块、渲染模块、响应模块、异常模块

4.drf核心组件
    序列化组件:将后台的任何数据,进行序列化返回给前台;将前台的数据反序列化后台model对象再入库。
    
5.群查接口相关组件:
    搜索、筛选、排序、分页

目的:
    掌握六大基础接口- 单查、群查、单增、单局部改、单整体改、单删
    一共十大接口:群增、群局部改、群整体改、群删

'''

接口

'''
接口概念:前后台进行数据交互的媒介--url链接

接口组成:
    url链接 - 唱得像返回数据的url链接
    请求方式 - get(查)、post(增)、put(整体改)、patch(局部改)、delete(删)
    请求参数 - 拼接参数、数据包参数(urlencoded、form-data、json)
    响应结果 - 响应的json数据
'''

开发阶段接口测试工具

'''
Postman:
    官网下载、直接安装
'''

接口文档

"""
1)为什么要写接口文档
   为什么要写接口:作为后台开发者,要将后台数据通过url链接反馈给前台
   为什么要写文档:作为后台开发者,一定知道改url链接应该采用什么请求方式、提交哪些数据、返回了哪些结果
就像后台要将url链接改前台一样,前台知道应该访问什么链接,所以前台也应该知道采用什么请求方式,以及提交什么数据。
   换而言之,接口文档是给 后台开发者、前台开发者、测试等各个项目相关项目组同时查看的,方便团队开发(规则是后台指定的,文档后台来写)
   
2)编写文档
   i)采用word编写
   ii)drf框架有插件,可以根据cbv的类快速生成文档
   iii)采用写文档的平台
   
3)书写过程
   i)先安装开发需要,完成接口的开发(设置后台url链接,设置请求方式、请求数据、响应结果)
   ii)选择一个接口平台,将后台url链接,设置请求方式、请求数据、响应结果信息变成成文档即可
"""

接口规范

'''
1.为什么要指定接口规范
    在前后台分离情况下,后台可以采用不同的后台运用,开发出类似的功能,所以前后台请求响应的规则是一致的;如果按照一套标准来编写接口,后台不管是什么语言,前台都可以采用一样的方式进行交互。反过来,后台也不需要管前台到底采用何种方式请求(页面、工具、代码)

2.通用的接口规范:Restful接口规范 - 规定了url如何编写;请求方式的含义;响应的数据规则
    - url编写
        - https协议 - 保证数据安全
        - api字眼 - 标识操作的是数据
        - v1、v2字眼 - 数据的不同版本共存
        - 资源复数 - 请求的数据称之为资源
        - 拼接条件 -过滤群查接口的数据(https://api.baidu.com/books/?limit=3&ordering=-price)
    
    - 请求方式
        /books/ -get 群查
        /books/(pk)/ - get 单查
        /books/ -post - 单增
        /books/(pk)/ put - 单整体改
        /books/(pk)/ patch - 单局部改
        /books/(pk)/ delete - 单删
    
    - 响应结果
        网络状态码与状态信息:2xx | 3xx | 4xx | 5xx
        数据状态码:前后台约定规则 - 0成功 1失败 2成功但无结果
        数据状态信息:自定义成功失败的信息解释
        数据本体:json数据
        数据子资源:头像、视频等、用资源的url链接
'''

CVB和FBV的比较

'''
1.路由绑定
urlpatterns = [
    # 1)项目启动,将test函数地址绑定给/test/路由
    # 2)请求/test/访问后台,后台就会调用绑定的test函数    
    url(r'^test/$',views.test),
]
    # 1)项目启动,将as_view()函数执行结果返回的view函数地址绑定给/test/路由
    # 2)请求/test/访问后台,后台就会调用绑定的view函数
    # 3)view函数会将请求交给dispatch方法完成分发,分发(反射)给视图类的不同方法处理请求
    url(r'^test/$', views.Test.as_view()),

2.业务处理
    fbv每一个接口都会对应一个函数来响应请求
    cbv可以将一个资源的增删改查所有操作放在一个类中管理,在内部再分方法逐一处理(高内聚低耦合:类内部聚合了6个接口,但对外只开放一个类的as_view)。

-------------------------------------------------------------
三个View其实是同一个类
继承View的目的:
    i)继承as_view()方法,完成路由的配置
    ii)继承dispath()方法,完成请求分发
    注:如果自己写as_view()和dispath()方法,自定义视图类可以不用继承任何类的
from django.http import JsonResponse
from django.views import View
from django.views.generic import View
from django.views.generic.base import Viewclass Test(View):  
    def get(self, request, *args, **kwargs):
        return JsonResponse('cbv ok', safe=False)
'''

永久配置安装源

Windows
"""
1、文件管理器文件路径地址栏敲:%APPDATA% 回车,快速进入 C:Users电脑用户AppDataRoaming 文件夹中
2、新建 pip 文件夹并在文件夹中新建 pip.ini 配置文件
3、新增 pip.ini 配置文件内容
"""
MacOS、Linux
"""
1、在用户根目录下 ~ 下创建 .pip 隐藏文件夹,如果已经有了可以跳过
    -- mkdir ~/.pip
2、进入 .pip 隐藏文件夹并创建 pip.conf 配置文件
    -- cd ~/.pip && touch pip.conf
3、启动 Finder(访达) 按 cmd+shift+g 来的进入,输入 ~/.pip 回车进入
4、新增 pip.conf 配置文件内容
"""
配置文件内容
"""
[global]
index-url = http://pypi.douban.com/simple
[install]
use-mirrors =true
mirrors =http://pypi.douban.com/simple/
trusted-host =pypi.douban.com
"""

DRF框架的安装

"""
1)安装
>: pip install djangorestframework

2)在settings中注册
INSTALLED_APPS = [
    # ...
    'rest_framework',
]

3)在settings中自定义drf配置
注:drf配置查找顺序,自定义settings的REST_FRAMEWORK配置字典 => drf默认settings的DEFAULTS
REST_FRAMEWORK = 

4)drf的封装特点:特点功能在特点模块下
from rest_framework.views import APIView
from rest_framework.response import Response
from rest_framework.request import Request
"""

图书资源准备

"""
1)在models.py创建Model类
from django.db import models
class Book(models.Model):
    name = models.CharField(max_length=64, verbose_name='书名')
    price = models.DecimalField(max_digits=5, decimal_places=2, verbose_name='价格')

    # 配置类
    class Meta:
        verbose_name_plural = '图书'

    def __str__(self):
        return self.name
        
2)在admin.py中注册Model类,方便在后台(admin)可视化管理数据
from django.contrib import admin
from . import models
admin.site.register(models.Book)  # admin要控制的model都需要注册一下

3)数据库迁移操作
>: python manage.py makemigrations
>: python manage.py migrate
>: python manage.py createsuperuser
    admin | Admin123
    
4)浏览器登录admin录入数据:http://localhost:8000/admin
"""

基于restful接口规范的接口设计

urlpatterns = [
    # 资源books接口的设计
    url(r'^books/$', views.BookAPIView.as_view()),  # 群查、单增
    url(r'^books/(?P<pk>d+)/$', views.BookAPIView.as_view()),  # 单查、单删、单(整体|局部)改
]

19-djangorestframework-drf工程搭建(代码片段)

...创建序列化器2.编写视图3.定义路由4.运行测试前言本篇来学习DRF工程搭建及体验环境安装与配置DRF需要以下依赖:Python(2.7,3.4,3.5,3.6,3.7)Django(1.11,2.0,2.1)DRF是以Django扩展应用的方式提供的,所以我们可以直接利用已有的Django... 查看详情

drf学习(代码片段)

Django配置'''1.应用是否需要在INSTALLED_APPS中注册取决于是否使用到app的一些特殊操作(如数据库相关),可以不用注册,但是注册后,应用的功能都能使用。结论:所有应用都注册即可2.数据库配置:在settings.py中完成即... 查看详情

drf框架(代码片段)

...组件五、群查接口相关组件:搜索、筛选、排序、分页DRF学习目的:必须掌握六大基础接口:单查、群查、单增、单局部改、单整体改、单删一共十大接口:群增、群局部改、群整体改、群删 查看详情

django&drf重点内容汇总(代码片段)

 Django&DRF重点内容大盘点  本文只是将学习过程中需要深刻记忆,在工作中常用的一些命令或者知识点进行一个罗列并阐释,不会全面的将所有内容进行讲解。大家可以在了解了Django框架和DRF框架之后再来看这边文章。... 查看详情

django后端开发学习笔记djangorestframework的序列化器(代码片段)

学习参考:【1】重写DRF的to_representation和to_internal_value方法有什么用途?【2】DjangoRESTFramework教程(4):玩转序列化器(Serializer)【3】DRF官方文档目录1.重写DRF的to_representation和to_internal_value方法1.1to_representation方法1.2to_inter 查看详情

django后端开发学习笔记djangorestframework的序列化器(代码片段)

学习参考:【1】重写DRF的to_representation和to_internal_value方法有什么用途?【2】DjangoRESTFramework教程(4):玩转序列化器(Serializer)【3】DRF官方文档目录1.重写DRF的to_representation和to_internal_value方法1.1to_representation方法1.2to_inter 查看详情

drf之解析器组件及序列化组件(代码片段)

  通过上一篇博客的学习,我们已经有了一个共识,Django无法处理application/json协议请求的数据,即,如果用户通过application/json协议发送请求数据到达Django服务器,我们通过request.POST获取到的是一个空对象。  DjangoRestFramework... 查看详情

django后端开发学习笔记:记录一些小问题(代码片段)

目录常见问题参考零散知识点1.DRF获取参数的方式2.DateTimeField3.DRF中的action常见问题参考这里记录下以后可能会用上的东西【1】Shell脚本启动django的runserver【2】Djangorestframework自定义返回数据格式【3】djangorestframework实现单个和群... 查看详情

django后端开发学习笔记:记录一些小问题(代码片段)

目录常见问题参考零散知识点1.DRF获取参数的方式2.DateTimeField3.DRF中的action常见问题参考这里记录下以后可能会用上的东西【1】Shell脚本启动django的runserver【2】Djangorestframework自定义返回数据格式【3】djangorestframework实现单个和群... 查看详情

django后端开发学习笔记djangorestframework的序列化器(代码片段)

学习参考:【1】重写DRF的to_representation和to_internal_value方法有什么用途?【2】DjangoRESTFramework教程(4):玩转序列化器(Serializer)【3】DRF官方文档目录1.重写DRF的to_representation和to_internal_value方法1.1to_representation方法1.2to_internal_value方... 查看详情

drf——认证(代码片段)

drf认证官网地址:https://www.django-rest-framework.org/api-guide/requests/1.drf的执行流程与源码剖析fromrest_framework.viewsimportAPIViewclassStudentView(APIView):defget(self,request,*args,**kwargs):pass说明:图片上的settings 查看详情

2.drf入门(代码片段)

drf介绍DjangoRESTframework(简称:DRF)是一个强大而灵活的WebAPI工具。遵循RESTFullAPI风格,功能完善,可快速开发API平台。官网文档:https://www.django-rest-framework.orgDjangoRESTframework最新版使用要求:Python(3.6、3.7、3.8、3.9、3.10)Django(2.2、3.0、3.1... 查看详情

drf路由(代码片段)

"在urls.py文件中按照如下步骤写,即可正确使用DRF的内置路由.from.viewsimportBookModel#1.导入我们的视图fromrest_framework.routersimportDefaultRouter#2.导入rest_framework内置的路由方法router=DefaultRouter()#3.首先,实例化一个DefaultRouter对象router 查看详情

drf缓存解决方案drf-extensions/redis(代码片段)

drf-extensions概述drf-extensions组件内部提供了DRF 的本地内存方式的缓存方式本地内存方式缓存在项目重启后则会消失官方点击这里  安装pip3installdrf-extensionsorfromgithubpip3installhttps://github.com/chibisov/drf-extensions/archive/maste 查看详情

drf-分页(代码片段)

目录一、三种分页模式1PageNumberPagination2LimitOffsetPagination3CursorPagination二、继承APIView的视图类下写分页一、三种分页模式1PageNumberPaginationfromrest_framework.paginationimportPageNumberPagination,LimitOffsetPagination,Curs 查看详情

初识drf(代码片段)

....1.1创建django项目6.2添加rest_framework应用6.3体验drf完全简写代码的过程6.3.0创先子应用6.3.1.创建模型操作类6.3.1.1执行数据迁移6.3.2.创建序列化器6.3.3.编写视图6.3.4.定义路由6 查看详情

drf序列化(代码片段)

一、安装Django RESTframework框架使用命令:pipinstalldjangorestframework二、在setings里面注册INSTALLED_APPS=["rest_framework"]Serializers序列化组件 查看详情

drf分页器(代码片段)

drf分页器1.第一种分页:类似于django中的分页2.第二种分页:偏移分页3.第三种分页:加密分页(查询速度快)无法跳跃基本参数fromrest_framework.paginationimportPageNumberPagination,LimitOffsetPagination,CursorPaginationpage_size#每页显示的数量page_query_param=... 查看详情