Django实现接口自动化平台(十一)项目模块Projects序列化器及视图【持续更新中】

相关文章:

Django实现接口自动化平台(十)自定义action names【持续更新中】_做测试的喵酱的博客-CSDN博客

本章是项目的一个分解,查看本章内容时,要结合整体项目代码来看:

python django vue httprunner 实现接口自动化平台(最终版)_python+vue自动化测试平台_做测试的喵酱的博客-CSDN博客

官方文档:

Serializers - Django REST framework

一、Projects 相关接口

项目数据的基本增删改查

请求方式URI对应action实现功能
GET/projects/.list()查询project列表
POST/projects/.create()创建一条数据
GET/projects/{id}/.retrieve()检索一条project的详细数据
PUT/projects/{id}/update()更新一条数据中的全部字段
PATCH/projects/{id}/.partial_update()更新一条数据中的部分字段
DELETE/projects/{id}/.destroy()删除一条数据
GET/projects/names/.names() 自定义查询project列表

本章节,只是单纯的实现了项目接口的增删改查,后续扩展功能在其他章节

1.1 项目列表 查询peoject列表 .list()

GET/projects/.list()查询project列表

 1.2  创建一条project .create()

POST/projects/.create()创建一条数据

 1.3 查看详情/更新项目 retrieve()  update() .partial_update()

查看详情与编辑 

  • 查看详情 .retrieve() 
  • 更新 update()  partial_update()

1.4  项目列表 自定义action names 

GET/projects/names/.names() 自定义查询project列表

应用场景:

在创建接口时,需要调用项目列表。设置该接口归属为哪个项目。

这里的项目列表,只展示项目的id 与 name,其他字段都不展示的。

names() 列表 与 list() 列表,对应的序列化器是不一样的。

 

 二、Projects 数据库模型model

projects项目表的字段

from django.db import modelsfrom utils.base_models import BaseModelclass Projects(BaseModel):id = models.AutoField(verbose_name='id主键', primary_key=True, help_text='id主键')name = models.CharField('项目名称', max_length=200, unique=True, help_text='项目名称')leader = models.CharField('负责人', max_length=50, help_text='项目负责人')tester = models.CharField('测试人员', max_length=50, help_text='项目测试人员')programmer = models.CharField('开发人员', max_length=50, help_text='开发人员')publish_app = models.CharField('发布应用', max_length=100, help_text='发布应用')desc = models.CharField('简要描述', max_length=200, null=True, blank=True, default='', help_text='简要描述')update_datetime = models.DateTimeField(auto_now=True, null=True, blank=True, help_text="修改时间",verbose_name="修改时间")create_datetime = models.DateTimeField(auto_now_add=True, null=True, blank=True, help_text="创建时间",verbose_name="创建时间")class Meta:db_table = 'tb_projects'verbose_name = '项目信息'verbose_name_plural = verbose_nameordering = ('id',)def __str__(self):return self.name

id、项目名称、负责人、测试人员、开发人员、应用名称、描述、修改时间、创建时间。

详解:

1、表名:db_table = 'tb_projects'

2、数据排序:ordering = ('id',)

三、序列化器serializer

# -*- coding: utf-8 -*-from rest_framework import serializers
from .models import Projectsclass ProjectModelSerializer(serializers.ModelSerializer):class Meta:model = Projectsexclude = ('update_datetime', )extra_kwargs = {"create_datetime": {"read_only": True,"format": "%Y年%m月%d日 %H:%M:%S"}}# names action的序列化器
class ProjectsNamesModelSerailizer(serializers.ModelSerializer):class Meta:model = Projectsfields = ('id', 'name')

一共两个序列化器

1、正常的序列化器,包含全部的字段

2、 names action 对应的序列化器,只展示id 与name

四、视图views.py

import loggingfrom rest_framework import filtersfrom rest_framework import viewsetsfrom rest_framework import permissionsfrom .models import Projects
from . import serializers
from utils.mixins import NamesMixinlogger = logging.getLogger('backend')class ProjectViewSet(NamesMixin, viewsets.ModelViewSet):"""list:获取项目列表数据retrieve:获取项目详情数据update:更新项目信息names:获取项目名称"""queryset = Projects.objects.all()serializer_class = serializers.ProjectModelSerializerfilter_backends = [filters.SearchFilter, filters.OrderingFilter]search_fields = ['=name', '=leader', '=id']ordering_fields = ['id', 'name', 'leader']permission_classes = [permissions.IsAuthenticated]def get_serializer_class(self):"""a.可以重写父类的get_serializer_class方法,用于为不同的action提供不一样的序列化器类b.在视图集对象中可以使用action属性获取当前访问的action方法名称:return:"""if self.action == 'names':return serializers.ProjectsNamesModelSerailizerelse:return super().get_serializer_class()

 1、names接口,由NamesMixin 提供

2、基础的增删改查,由viewsets.ModelViewSet 提供

3、get_serializer_class 重写的, ModelViewSet->GenericViewSet->GenericAPIView 类下的方法。

    def get_serializer_class(self):"""a.可以重写父类的get_serializer_class方法,用于为不同的action提供不一样的序列化器类b.在视图集对象中可以使用action属性获取当前访问的action方法名称:return:"""if self.action == 'names':return serializers.ProjectsNamesModelSerailizerelse:return super().get_serializer_class()

重写后,当action为names时,返回序列化器为serializers.ProjectsNamesModelSerailizer

get_serializer_class 源码:

 

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

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

相关文章

在外Windows远程连接MongoDB数据库【无公网IP】

文章目录 前言1. 安装数据库2. 内网穿透2.1 安装cpolar内网穿透2.2 创建隧道映射2.3 测试随机公网地址远程连接 3. 配置固定TCP端口地址3.1 保留一个固定的公网TCP端口地址3.2 配置固定公网TCP端口地址3.3 测试固定地址公网远程访问 转载自cpolar极点云文章:公网远程…

论文阅读-2:基于深度学习的大尺度遥感图像建筑物分割研究

一、该网络中采用了上下文信息捕获模块。通过扩大感受野,在保留细节信息的同时,在中心部分进行多尺度特征的融合,缓解了传统算法中细节信息丢失的问题;通过自适应地融合局部语义特征,该网络在空间特征和通道特征之间建…

docker服务启动过程分析

How docker.service start? just by ref 我们先了解docker的各个核心组件的介绍 runc:runc实现了容器的底层功能,例如创建、运行等。runc通过调用内核接口为容器创建和管理cgroup、namespace等Linux内核功能,来实现容器的核心特…

PyTorch预训练和微调:以VGG16为例

文章目录 预训练和微调代码测试结果参考来源 预训练和微调代码 数据集:CIFAR10 CIFAR-10数据集由10类32x32的彩色图片组成,一共包含60000张图片,每一类包含6000图片。其中50000张图片作为训练集,10000张图片作为测试集。数据集介…

SolidUI AI生成可视化,0.1.0版本模块划分以及源码讲解

1.背景 随着文本生成图像的语言模型兴起,SolidUI想帮人们快速构建可视化工具,可视化内容包括2D,3D,3D场景,从而快速构三维数据演示场景。SolidUI 是一个创新的项目,旨在将自然语言处理(NLP)与计算机图形学相…

【微信小程序-uniapp】CustomDialog 居中弹窗组件

1. 效果图 2. 组件完整代码 <template><uni-popup :ref="ref" type="center" @change

Ubuntu下配置Redis哨兵集群

目录 准备实例和配置 启动哨兵集群 测试配置 搭建一个三节点形成的Sentinel集群&#xff0c;来监管Redis主从集群。 三个sentinel哨兵实例信息如下&#xff1a; 节点IPPORTs1192.168.22.13527001s2192.168.22.13527002s3192.168.22.13527003 准备实例和配置 要在同一台虚…

组合式API

文章目录 前言了解组合式API简单类型 ref封装对象类型 user.name子组件数组类型 reactive封装 组合式 API 基础练习基础练习优化 前言 Vue 3 的组合式 API&#xff08;Composition API&#xff09;是一组函数和语法糖&#xff0c;用于更灵活和可组合地组织 Vue 组件的代码逻辑…

leetcode 538. 把二叉搜索树转换为累加树

2023.7.16 这道题利用中序遍历&#xff08;右中左&#xff09;的操作不断修改节点的值即刻&#xff0c;直接看代码&#xff1a; class Solution { public:TreeNode* convertBST(TreeNode* root) {stack<TreeNode*> stk;//前面的累加值int pre_value 0;TreeNode* cur r…

review回文子串

给你一个字符串 s&#xff0c;请你将 s 分割成一些子串&#xff0c;使每个子串都是 回文串 。返回 s 所有可能的分割方案。 回文串 是正着读和反着读都一样的字符串。 class Solution {List<List<String>> lists new ArrayList<>(); // 用于存储所有可能…

【数据挖掘】时间序列教程【二】

2.4 示例:颗粒物浓度 在本章中,我们将使用美国环境保护署的一些空气污染数据作为运行样本。该数据集由 2 年和 5 年空气动力学直径小于或等于 3.2017 \(mu\)g/m\(^2018\) 的颗粒物组成。 我们将特别关注来自两个特定监视器的数据,一个在加利福尼亚州弗雷斯诺,另一个在密…

图片文字对齐 图片文字居中对齐

方法一: 用 vertical-align: middle; <view class="container"><view class="search"><image src="../../images/icon/search.png" alt="" /><text class="tex">搜索</text></view>&…

透彻!127.0.0.1和0.0.0.0之间的区别总算听明白了!

参考视频&#xff1a;透彻&#xff01;127.0.0.1和0.0.0.0之间的区别总算听明白了&#xff01;_哔哩哔哩_bilibili 0.0.0.0不是一个ip地址&#xff0c;而是一个通配符&#xff0c;通配当前主机上面所有的网卡&#xff08;包括虚拟网卡&#xff09;。

深度学习环境安装|PyCharm,Anaconda,PyTorch,CUDA,cuDNN等

本文参考了许多优秀博主的博客&#xff0c;大部分安装步骤可在其他博客中找到&#xff0c;鉴于我本人第一次安装后&#xff0c;时隔半年&#xff0c;我忘记了当时安装的许多细节和版本信息&#xff0c;所以再一次报错时&#xff0c;重装花费了大量时间。因此&#xff0c;我觉得…

Profibus DP主站转Modbus TCP网关profibus从站地址范围

远创智控YC-DPM-TCP网关。这款产品在Profibus总线侧实现了主站功能&#xff0c;在以太网侧实现了ModbusTcp服务器功能&#xff0c;为我们的工业自动化网络带来了全新的可能。 远创智控YC-DPM-TCP网关是如何实现这些功能的呢&#xff1f;首先&#xff0c;让我们来看看它的Profib…

【新版系统架构】第十七章-通信系统架构设计理论与实践

软考-系统架构设计师知识点提炼-系统架构设计师教程&#xff08;第2版&#xff09; 第一章-绪论第二章-计算机系统基础知识&#xff08;一&#xff09;第二章-计算机系统基础知识&#xff08;二&#xff09;第三章-信息系统基础知识第四章-信息安全技术基础知识第五章-软件工程…

Redis---缓存双写一致性

目录 一、什么是缓存双写一致性呢&#xff1f; 1.1 双检加锁机制 二、数据库和缓存一致性的更新策略 2.1、先更新数据库&#xff0c;后更新缓存 2.2 、先更新缓存&#xff0c;后更新数据库 2.3、先删除缓存&#xff0c;在更新数据库 延时双删的策略&#xff1a; 2.4.先更新数…

Matplotlib---3D图

1. 3D图 # 3D引擎 from mpl_toolkits.mplot3d.axes3d import Axes3D fig plt.figure(figsize(8, 5)) x np.linspace(0, 100, 400) y np.sin(x) z np.cos(x)# 三维折线图 axes Axes3D(fig, auto_add_to_figureFalse) fig.add_axes(axes) axes.plot(x,y,z) plt.savefi…

Runner 介绍

Runner 介绍 概述 Runner是用来批量调用collection里某个文件夹里的全部接口的。 (注意&#xff0c;我说的是文件夹内所有接口,可以是一级文件夹&#xff0c;也可是二级文件夹) 示意图 打开runner&#xff0c;如图所示 说明 历史记录 历史执行记录 2.导入 导入别人或之…

h5页面如何与原生交互

本文讲述h5页面跟原生通信&#xff0c;比如在app内&#xff0c;调用相机&#xff0c;获取相册内的图片&#xff0c;在app内拉起微信小程序等等&#xff0c;h5页面没有这么多权限能够直接调用移动端的原生能力&#xff0c;这个时候就需要与原生进行通讯&#xff0c;传递一个信号…