Django实现接口自动化平台(十)自定义action names【持续更新中】

这篇具有很好参考价值的文章主要介绍了Django实现接口自动化平台(十)自定义action names【持续更新中】。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

相关文章:

Django实现接口自动化平台(九)环境envs序列化器及视图【持续更新中】_做测试的喵酱的博客-CSDN博客

深入理解DRF中的Mixin类_做测试的喵酱的博客-CSDN博客 

python中Mixin类的使用_做测试的喵酱的博客-CSDN博客 

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

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

 

一、背景

学生信息(id,name,age,address)

查看数据列表(学生列表)时,需要两种展示形式。

形式一:直接展示学生详细信息的列表 .list()

形式二:只展示id与name学生信息的列表 .names()

形式一与形式二,对应的序列化器是不一样的。

所以自定义names() acntion ,来对应另一个序列化器

二、自定义action

# -*- coding: utf-8 -*-

import os
from datetime import datetime

from django.conf import settings
from rest_framework.decorators import action
from rest_framework.response import Response

from envs.models import Envs
from utils import common


class NamesMixin:
    @action(methods=['GET'], detail=False)
    def names(self, request, *args, **kwargs):
        response = super().list(request, *args, **kwargs)
        return response

    def paginate_queryset(self, queryset):
        """
        names action禁用分页功能
        :param queryset:
        :return:
        """
        if self.action == "names":
            return
        else:
            return super().paginate_queryset(queryset)

    def filter_queryset(self, queryset):
        """
        names action禁用过滤功能
        :param queryset:
        :return:
        """
        if self.action == "names":
            return self.queryset
        else:
            return super().filter_queryset(queryset)

1、自定义names action

2、当action 为names时:

当action 为names时,不做分页、过滤功能的处理。

这里的 def paginate_queryset(self, queryset): 

def filter_queryset(self, queryset): 方法,是重写。

重写的

 EnvsViewSet(NamesMixin, viewsets.ModelViewSet-> ModelViewSet->GenericViewSet->GenericAPIView 类下的方法。

GenericAPIView源码:
Django实现接口自动化平台(十)自定义action names【持续更新中】,Django实现测试平台,Python,Django/flask,django,自动化,python

 三、Mixin类应用

Mixin类需要配合其他类一起使用,视图类:

from rest_framework import viewsets
from rest_framework import permissions
from .models import Envs
from . import serializers
from utils.mixins import NamesMixin


class EnvsViewSet(NamesMixin, viewsets.ModelViewSet):
    queryset = Envs.objects.all()
    serializer_class = serializers.EnvsModelSerializer
    permission_classes = [permissions.IsAuthenticated]

    def get_serializer_class(self):
        if self.action == "names":
            return serializers.EnvsNamesSerializer
        else:
            return self.serializer_class

get_serializer_class 方法,也是重写的GenericAPIView(views.APIView) 类的方法。

一共重写了三个方法

  • 分页功能:def paginate_queryset(self, queryset)
  • 过滤功能:def filter_queryset(self, queryset)
  • 选择序列化器:def get_serializer_class(self):

分页、过滤 在 自定义Mixin类,下重写,是为了方便封装,这是通用的

选择序列化器 在 具体应用的视图类下,重写,这个是个性化的,不同的视图类,需要指定不同的序列化器。文章来源地址https://www.toymoban.com/news/detail-573280.html

到了这里,关于Django实现接口自动化平台(十)自定义action names【持续更新中】的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Django实现接口自动化平台(八)测试报告reports序列化器及视图【持续更新中】

    上一章: Django实现接口自动化平台(七)数据库设计_做测试的喵酱的博客-CSDN博客 下一章: 官方文档: Serializers - Django REST framework apps/reports/serializers.py 1.1.1 代码解释: 1、  exclude: You can set the  exclude  attribute to a list of fields to be excluded from the serializer. For example: 2、read_o

    2024年02月09日
    浏览(45)
  • Django实现接口自动化平台(十一)项目模块Projects序列化器及视图【持续更新中】

    相关文章: Django实现接口自动化平台(十)自定义action names【持续更新中】_做测试的喵酱的博客-CSDN博客 本章是项目的一个分解,查看本章内容时,要结合整体项目代码来看: python django vue httprunner 实现接口自动化平台(最终版)_python+vue自动化测试平台_做测试的喵酱的博

    2024年02月16日
    浏览(42)
  • Django实现接口自动化平台(十四)测试用例模块Testcases序列化器及视图【持续更新中】

    相关文章: Django实现接口自动化平台(十三)接口模块Interfaces序列化器及视图【持续更新中】_做测试的喵酱的博客-CSDN博客 本章是项目的一个分解,查看本章内容时,要结合整体项目代码来看: python django vue httprunner 实现接口自动化平台(最终版)_python+vue自动化测试平台

    2024年02月17日
    浏览(37)
  • 基于 HttpRunner + Django + Vue + Element UI 的接口自动化测试平台

    https://github.com/tahitimoon/LunarLink https://lunar-link-docs.fun 基于HttpRunner + Django + Vue + Element UI 的接口自动化测试平台,生产可用。 此外,非常感谢 花菜。没有 AnotherFasterRunner 就不会有 LunarLink 😃 🎨 Django 🎶 Django Rest framework 🎉 Vue.js 🎃 Element UI 🏐 django-celery-beat(定时任务) 🎲

    2024年04月11日
    浏览(41)
  • Django+vue自动化测试平台(7)-- 使用Selenium+vue实现WebUI自动化及结果展示

    Selenium是一个用于Web应用程序测试的工具。Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。支持的浏览器包括IE(7, 8, 9, 10, 11),Mozilla Firefox,Safari,Google Chrome,Opera,Edge等。这个工具的主要功能包括:测试与浏览器的兼容性——测试应用程序看是否能够很好得

    2024年02月14日
    浏览(55)
  • Vue实现自动化平台(四)--接口管理页面的实现

    上一章: Vue实现自动化平台(三)_做测试的喵酱的博客-CSDN博客 github地址:https://github.com/18713341733/vuemiaotest  这个目前只是用来练手的,项目还没成型。等以后我写完了,再更新一下项目链接。    这个页面样式,与我们上一章 项目管理的页面样式展示基本一样。 所以样式

    2023年04月16日
    浏览(38)
  • Github Actions实现Spring Boot自动化部署(第二弹)

    ​ 今天就来讲述一下如何使用GitHub结合Actions实现Spring Boot程序从提交代码到打包、容器化、部署全过程自动化。首先咱们得现有一个能够在本地运行的Spring Boot程序,并且在Github上拥有一个仓库。 1.1 提交代码到Github 1.2 设置服务器密钥、GitHub私钥、DockerHub账号 secret value rem

    2024年02月08日
    浏览(47)
  • 搭建Django+pyhon+vue自动化测试平台

    Django安装 使用管理员身份运行pycharm使用local    检查django是否安装成功     创建项目 cd 切换至创建的项目中启动django项目 启动项目 点击连接跳转至浏览器  更改django为中文settings文件---LANGUAGE_CODE Vue安装 安装cnpm,代替npm指令,速度快        安装vue脚手架         切换至

    2024年02月14日
    浏览(40)
  • github-action+docker实现项目可持续自动化部署

    这篇文章以部署vue3项目和nuxt2项目为例结合 github-action , docker , nginx 等介绍不同的项目自动部署流程 部署vue3项目 步骤: 1、腾讯云开启镜像仓库 2、github配置secrets 3、项目根目录创建dockerfile文件(在action工作流中创建镜像) 4、github配置action工作流(yml文件) 上面步骤执行结

    2024年04月26日
    浏览(42)
  • 接口自动化测试平台

    下载了大神的EasyTest项目demo修改了下https://testerhome.com/topics/12648 原地址。也有看另一位大神的HttpRunnerManagerhttps://github.com/HttpRunner/HttpRunnerManager 原地址,由于水平有限,感觉有点复杂~~~ 【整整200集】超超超详细的Python接口自动化测试进阶教程,真实模拟企业项目实战!!  

    2024年02月15日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包