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

这篇具有很好参考价值的文章主要介绍了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列表

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

 1.2  创建一条project .create()

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

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

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

查看详情与编辑 

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

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

1.4  项目列表 自定义action names 

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

应用场景:

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

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

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

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

 二、Projects 数据库模型model

projects项目表的字段

from django.db import models

from utils.base_models import BaseModel


class 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_name
        ordering = ('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 Projects



class ProjectModelSerializer(serializers.ModelSerializer):

    class Meta:
        model = Projects
        exclude = ('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 = Projects
        fields = ('id', 'name')

一共两个序列化器

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

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

四、视图views.py

import logging

from rest_framework import filters

from rest_framework import viewsets

from rest_framework import permissions

from .models import Projects
from . import serializers
from utils.mixins import NamesMixin


logger = logging.getLogger('backend')


class ProjectViewSet(NamesMixin, viewsets.ModelViewSet):
    """
    list:
    获取项目列表数据

    retrieve:
    获取项目详情数据

    update:
    更新项目信息

    names:
    获取项目名称

    """
    queryset = Projects.objects.all()
    serializer_class = serializers.ProjectModelSerializer

    filter_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.ProjectsNamesModelSerailizer
        else:
            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.ProjectsNamesModelSerailizer
        else:
            return super().get_serializer_class()

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

get_serializer_class 源码:

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

 文章来源地址https://www.toymoban.com/news/detail-571585.html

到了这里,关于Django实现接口自动化平台(十一)项目模块Projects序列化器及视图【持续更新中】的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索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日
    浏览(10)
  • Django实现接口自动化平台(十二)自定义函数模块DebugTalks 序列化器及视图【持续更新中】

    Django实现接口自动化平台(十二)自定义函数模块DebugTalks 序列化器及视图【持续更新中】

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

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

    Django实现接口自动化平台(十四)测试用例模块Testcases序列化器及视图【持续更新中】

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

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

    基于 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日
    浏览(12)
  • Django+vue自动化测试平台(7)-- 使用Selenium+vue实现WebUI自动化及结果展示

    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日
    浏览(16)
  • Vue实现自动化平台(四)--接口管理页面的实现

    Vue实现自动化平台(四)--接口管理页面的实现

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

    2023年04月16日
    浏览(9)
  • 搭建Django+pyhon+vue自动化测试平台

    搭建Django+pyhon+vue自动化测试平台

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

    2024年02月14日
    浏览(6)
  • Django(6)-django项目自动化测试

    Django(6)-django项目自动化测试

    Django 应用的测试应该写在应用的 tests.py 文件里。测试系统会自动的在所有以 tests 开头的文件里寻找并执行测试代码。 我们的 polls 应用现在有一个小 bug 需要被修复:我们的要求是如果 Question 是在一天之内发布的, Question.was_published_recently() 方法将会返回 True ,然而现在这个

    2024年02月11日
    浏览(9)
  • 接口自动化测试平台

    接口自动化测试平台

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

    2024年02月15日
    浏览(16)
  • 接口自动化测试系列-接入测试平台

    接口自动化测试系列-接入测试平台

    测试平台目录 测试平台自建源码 后台核心代码 部分前端代码样例

    2024年02月10日
    浏览(21)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包