【DRF配置管理】如何建立完善的DRF自带接口docs文档

news2024/9/21 16:18:19

原文作者:我辈李想
版权声明:文章原创,转载时请务必加上原文超链接、作者信息和本声明。

DRF应用和管理

【DRF配置管理】Django使用DRF框架
【DRF配置管理】如何实现JWT认证
【DRF配置管理】如何在视图函数配置参数(一)
【DRF配置管理】如何在视图函数配置参数(二)
【DRF配置管理】如何在视图函数配置参数(三)
【DRF配置管理】如何在视图函数配置参数(四)
【DRF配置管理】如何建立完善的docs文档


文章目录

  • DRF应用和管理
  • 前言
  • 一、三方依赖
  • 二、项目的settings
  • 三、项目urls配置
  • 四、视图注释显示
  • 五、请求参数显示
    • 1.models参数
    • 2.自定义参数


前言

DRF广泛的应用于django网络开发,尤其是在前后端分离的项目中,与vue、react等框架结合使用。本篇博客单独介绍DRF自带接口文档的使用。


一、三方依赖

这个库一般不需要单独安装,会随着pip install djangorestframework一起安装。

pip3 install coreapi

二、项目的settings

REST_FRAMEWORK = {
    'DEFAULT_SCHEMA_CLASS': 'rest_framework.schemas.coreapi.AutoSchema',
}

三、项目urls配置

from rest_framework.documentation import include_docs_urls
urlpatterns = [
    ...
    path('docs/', include_docs_urls(title='站点页面标题', authentication_classes=[]))
]

四、视图注释显示

这里的注释一般是在类视图,主要跟继承的方法有关,本博客以ModelViewSet为例,示例如下:

class PicDatasView(ModelViewSet):
    """
    list:
    不带路径参数获取全部
    create:
    新增一条记录
    retrieve:
    带路径参数获取一条
    update:
    带路径参数更新一条
    destroy:
    带路径参数删除一条
    """
    def list(self, request):
    	pass

在这里插入图片描述
在这里插入图片描述

五、请求参数显示

这里的请求参数包含两部分,第一种models参数,是使用序列化的字段参数,也是models模型的字段,第二种就是自定义参数,一般数为了后端判断,或者批量操作的列表参数等。

1.models参数

这种参数可以通过设置字段的help_text来实现,主要用于创建和修改。

models.py文件

class HistoryData(models.Model):
    id = models.AutoField(primary_key=True, help_text='历史区域的主键id')
    
    geometrycollection = models.GeometryCollectionField('混合数据', null=True, help_text='空间混合数据')

serializer.py文件

class HistoryDataSerializer(GeoModelSerializer):
    """
    目标区域
    """
    hid = serializers.IntegerField(source="id", read_only=True)

    class Meta:
        model = HistoryData
        fields = ['hid', 'name', 'user_id', 'type', 'point', 'diameter', 'geometrycollection']

在这里插入图片描述
在这里插入图片描述

2.自定义参数

自定义参数需要我们自己设置,主要用于list(getall)的查询和文件下载。

views.py文件

import coreapi
import coreschema
from rest_framework.schemas import ManualSchema

class KmlDownload(ModelViewSet):
    """
    list:下载文件:kml
    """
    serializer_class = KmlDownloadSerializer
    # 认证
    authentication_classes = [IsAuthentication]
    # docs文档参数
    schema = ManualSchema(
        description='下载文件:kml',
        fields=[
            coreapi.Field(name="hid", required=True, location="query",
                          schema=coreschema.Integer(description="历史区域主键id")),
            coreapi.Field(name="pids", required=True, location="query",
                          schema=coreschema.Array(description="影像数据主键id的列表[1,2,3,4]"))
        ]
    )

    def list(self, request):
        pass

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/459265.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

okcc呼叫问题的解决方法(建议收藏)

很多客户开始使用OKCC呼叫中心系统,运营经常遇到的问题是呼叫打不通,无话单,呼叫秒挂,语音提示"您没有使用业务的权限"等等异常情况,而且反馈线路正常,使用呼叫系统拨打就是呼不通。 OKCC系统…

史上最烂 spring aop 原理分析

盗引中篇spring aop spring aop: jdk 动态代理和 cglib 动态代理的特点、区别、使用方式、原理及各自对反射的优化、二者在 spring 中的统一、通知顺序、从 Aspect 到 Advisior、静态通知调用、动态通知调用。 版本 jdk:8spring:5.3.20spring boot&…

华为OD机试(20222023)真题目录 + 考点 + 复盘思路

大家好,我是哪吒。 本专栏包含了最新最全的华为OD机试真题,有详细的分析和Java代码解答。已帮助1000同学顺利通过OD机考,发现新题目,随时更新。 以下为华为OD机试真题题库。 1、华为OD机试真题(Java)&am…

创建型模式-原型模式

原型模式 介绍 用一个已经创建的实例作为原型,通过复制该原型对象来创建一个和原型对象相同的新对象 结构 原型模式包含如下角色: 抽象原型类:规定了具体原型对象必须实现的的 clone() 方法。具体原型类:实现抽象原型类的 cl…

Linux文本处理三大利器Grep、AWK、Sed

写在前面 Linux三剑客是文本处理工具,它们可以帮助我们快速、高效地对文本进行处理。其中包括了grep、awk、以及sed这三个强大的命令行工具。 Linux 三剑客主要作用: grep,它可以根据正则表达式查找相关内容并打印对应的数据。awk,它可以根…

redhat8配置vsftpd服务

目录 一、匿名访问模式 1.1、ftp服务器端修改配置(配置文件:/etc/vsftpd/vsftpd.conf) 1.2 修改ftp目录的权限 1.3 设置selinux服务对ftp服务的访问规则策略为允许 1.4 防火墙添加ftp服务 1.5 测试 二、本地用户模式 2.1 服务端修改配…

6、什么是类型断言?

虽然 TypeScript 很强大,但有时还不如我们了解一个值的类型方便,这时候我们更希望 TypeScript 不要帮我们进行类型检查,而是交给我们自己来,所以就用到了类型断言。类型断言有点像是一种类型转换,它把某个值强行指定为…

Vue收集表单数据学习笔记

收集表单数据 v-model双向数据绑定,收集的是input框的value,单选按钮不存在value,就像代码中的男女选项,即使绑定性别v-model“sex”,控制台依然不能接收性别的值,因为没有value值,&#xff0c…

python 第二章——数据类型详解

文章目录 前言一、什么是数据类型1.变量2.注释 二、数字三、字符串四、布尔五、列表六、元组七、集合八、字典总结 前言 本系列教程目录,可点击这里查看:Python教程目录 学习一门编程语言,第一件事就应该是熟练掌握这门编程语言的基本数据类…

[Java]JavaWeb开发中的MVC设计模式

一、有关Java Web与MVC设计模式 学习过基本Java Web开发的人都已经了解了如何编写基本的Servlet,如何编写jsp及如何更新浏览器中显示的内容。但是我们之前自己编写的应用一般存在无条理性,对于一个小型的网站这样的编写没有任何问题,但是一但…

MCDF代码详解,mcdf_rgm_pkg.sv代码超详细注释

寄存器模块代码详解 好戏开始: `include "param_def.v" package mcdf_rgm_pkg; import uvm_pkg::*; `include "uvm_macros.svh" import reg_pkg::*; //具有uvm_reg类型的专用寄存器描述[write-red-reg] class ctrl_reg extends uvm_r…

机器人教学中游戏化课程案例尝试

本文内容严格按创作模板发布: 2023年LPL春季赛季后赛正在火热进行中,你们心中的总冠军是哪支队伍呢?作为热爱游戏的程序猿,一起来聊聊你那些有意义的游戏开发经历吧! 游戏化ROS机器人课程的优势有以下七点&#xff1a…

第3章-运行时数据区

此章把运行时数据区里比较少的地方讲一下。虚拟机栈,堆,方法区这些地方后续再讲。 转载https://gitee.com/youthlql/JavaYouth/tree/main/docs/JVM。 运行时数据区概述及线程 前言 本节主要讲的是运行时数据区,也就是下图这部分&#xff0c…

5.微服务项目实战---Gateway--服务网关,实现统一认证、鉴权、监控、路由转发等

5.1 网关简介 大家都都知道在微服务架构中,一个系统会被拆分为很多个微服务。那么作为客户端要如何去调用 这么多的微服务呢?如果没有网关的存在,我们只能在客户端记录每个微服务的地址,然后分别去调用。 这样的架构&#xff0…

用友联合7家信创生态伙伴成立“信创领先实践联盟”,助力企业数智化国产替代

数字经济背景下,面对国际局势不稳定等以切不确定因素,只有突破和掌握关键核心技术,打造生态话语权,掌握产业发展主动权,向产业价值链高端迈进,我国才能摆脱受制于人局面。而推动信创产业繁荣发展&#xff0…

SAP-选择实施离散制造模式还是重复制造模式?

Implement Discrete Manufacturing or Repetitive Manufacturing? 翻译一篇,反正我也写不出来~~~~ “狗还是猫?” 这可能是世界上第二难的问题。 想知道最难的是什么? 这里是: “实施离散制造还是重复制造?” 作…

【设计模式】我终于读懂了访问者模式。。。

🌰测评系统的需求 将观众分为男人和女人,对歌手进行测评,当看完某个歌手表演后,得到他们对该歌手不同的评价(评价 有不同的种类,比如 成功、失败 等)传统方案 🌱传统方式的问题分析 如果系统比较小&…

2023年面试题入门篇和进阶篇万余字题目总结【答案+解析】

2023年Java面试题入门篇和进阶篇总结【答案解析】 入门篇1.、下列代码输出结果是()2.x为float类型,y为double类型,a为int类型,b为long类型,c为char类型,问xy*a/xb/ac的值是什么类型3.下列哪种说法是正确的4.mysql表use…

rollup打包封装的js类库

rollup中文网:简介 | rollup.js 中文文档 | rollup.js中文网Rollup 是一个 JavaScript 模块打包器,可以将小块代码编译成大块复杂的代码,Rollup 对代码模块使用新的标准化格式,这些标准都包含在 JavaScript 的 ES6 版本中。https:…

postman解决报错填坑指南

postman报错问题处理总结 问题1:如何解决postman请求异常丢掉proxy开头header自动使用系统环境变量代理问题描述:postman请求,配置了proxy开头的header,但是发请求的时候没有携带,可以查看postman的View-Show Postman …