国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Django實現(xiàn)接口自動化平臺(九)環(huán)境envs序列化器及視圖【持續(xù)更新中】

這篇具有很好參考價值的文章主要介紹了Django實現(xiàn)接口自動化平臺(九)環(huán)境envs序列化器及視圖【持續(xù)更新中】。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

相關(guān)文章:

Django實現(xiàn)接口自動化平臺(八)測試報告reports序列化器及視圖【持續(xù)更新中】_做測試的喵醬的博客-CSDN博客

本章是項目的一個分解,查看本章內(nèi)容時,要結(jié)合整體項目代碼來看:

python django vue httprunner 實現(xiàn)接口自動化平臺(最終版)_python+vue自動化測試平臺_做測試的喵醬的博客-CSDN博客

一、項目環(huán)境的應用場景

1.1 環(huán)境說明:

1、項目運行時,可以選擇一套環(huán)境來運行

2、環(huán)境里,主要就是這個項目的host

1.2 環(huán)境的接口及應用場景

接口列表

請求方式 URI 對應action 實現(xiàn)功能
GET /envs/ .list() 查詢env列表
POST /envs/ .create() 創(chuàng)建一條數(shù)據(jù)
GET /envs/{id}/ .retrieve() 檢索一條env的詳細數(shù)據(jù)
PUT /envs/{id}/ update() 更新一條數(shù)據(jù)中的全部字段
PATCH /envs/{id}/ .partial_update() 更新一條數(shù)據(jù)中的部分字段
DELETE /envs/{id}/ .destroy() 刪除一條數(shù)據(jù)
GET /envs/names/ .names() 自定義 查詢env列表

1、查詢env列表?.list()

GET /envs/ .list() 查詢env列表

Django實現(xiàn)接口自動化平臺(九)環(huán)境envs序列化器及視圖【持續(xù)更新中】,Django實現(xiàn)測試平臺,Django/flask,django,自動化,python

注意:

1、列表涉及到分頁?

2、創(chuàng)建一條env?.create()

Django實現(xiàn)接口自動化平臺(九)環(huán)境envs序列化器及視圖【持續(xù)更新中】,Django實現(xiàn)測試平臺,Django/flask,django,自動化,python

?3、查看詳情與編輯?.retrieve()??update()?.partial_update()

  • 查看?.retrieve()?
  • 更新?update()? partial_update()

Django實現(xiàn)接口自動化平臺(九)環(huán)境envs序列化器及視圖【持續(xù)更新中】,Django實現(xiàn)測試平臺,Django/flask,django,自動化,python

?4、env列表 names

Django實現(xiàn)接口自動化平臺(九)環(huán)境envs序列化器及視圖【持續(xù)更新中】,Django實現(xiàn)測試平臺,Django/flask,django,自動化,python

?已經(jīng)有l(wèi)ist,為什么還要自定義action names:

  • list 有分頁,names沒有分頁
  • list展示的項目數(shù)據(jù),names只展示id 與 name

二、數(shù)據(jù)模型 model

models.py?

from django.db import models

from utils.base_models import BaseModel


class Envs(BaseModel):
    id = models.AutoField(verbose_name='id主鍵', primary_key=True, help_text='id主鍵')
    name = models.CharField(verbose_name='環(huán)境名稱', max_length=200, unique=True, help_text='環(huán)境名稱')
    base_url = models.URLField(verbose_name='請求base url', max_length=200, help_text='請求base url')
    desc = models.CharField(verbose_name='簡要描述', max_length=200, help_text='簡要描述')

    class Meta:
        db_table = 'tb_envs'
        verbose_name = '環(huán)境信息'
        verbose_name_plural = verbose_name
        ordering = ('id',)

    def __str__(self):
        return self.name

?環(huán)境模塊,目前只有一個字段,就是

base_url = models.URLField(verbose_name='請求base url', max_length=200, help_text='請求base url')

整個項目的host地址

三、序列化器?serializers

serializers.py

from rest_framework import serializers

from .models import Envs


class EnvsModelSerializer(serializers.ModelSerializer):

    class Meta:
        model = Envs
        exclude = ('update_datetime',)
        extra_kwargs = {
            'create_datetime': {
                'read_only': True,
                'format': '%Y年%m月%d日 %H:%M:%S'
            }
        }


class EnvsNamesSerializer(serializers.ModelSerializer):

    class Meta:
        model = Envs
        fields = ('id', 'name')

有兩個序列化器。

  • EnvsModelSerializer:正常顯示所有數(shù)據(jù)
  • EnvsNamesSerializer:只顯示id與name,為names action 準備的

四、視圖

4.1?viewsets.ModelViewSet

views.py 視圖

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

通過繼承?viewsets.ModelViewSet視圖類,實現(xiàn)以下接口

請求方式 URI 對應action 實現(xiàn)功能
GET /envs/ .list() 查詢env列表
POST /envs/ .create() 創(chuàng)建一條數(shù)據(jù)
GET /envs/{id}/ .retrieve() 檢索一條env的詳細數(shù)據(jù)
PUT /envs/{id}/ update() 更新一條數(shù)據(jù)中的全部字段
PATCH /envs/{id}/ .partial_update() 更新一條數(shù)據(jù)中的部分字段
DELETE /envs/{id}/ .destroy() 刪除一條數(shù)據(jù)

重寫了get_serializer_class 方法

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

get_serializer_class 源碼:

Django實現(xiàn)接口自動化平臺(九)環(huán)境envs序列化器及視圖【持續(xù)更新中】,Django實現(xiàn)測試平臺,Django/flask,django,自動化,python?

重寫后,當action為names時,返回序列化器為serializers.EnvsNamesSerializer

?

4.2? 自定義names

相關(guān)知識點:

深入理解DRF中的Mixin類_做測試的喵醬的博客-CSDN博客

python中Mixin類的使用_做測試的喵醬的博客-CSDN博客

names接口,需要我們自定義action?

GET /envs/names/ .names() 自定義 查詢env列表

1、自定義??NamesMixin:

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)

?2、自定義names action

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

3、分頁處理

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

4、過濾處理

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

源碼:

Django實現(xiàn)接口自動化平臺(九)環(huán)境envs序列化器及視圖【持續(xù)更新中】,Django實現(xiàn)測試平臺,Django/flask,django,自動化,python

當action 為names時,不做分頁、過濾功能的處理。

這里的?def paginate_queryset(self, queryset):?

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

重寫的

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

GenericAPIView源碼:

Django實現(xiàn)接口自動化平臺(九)環(huán)境envs序列化器及視圖【持續(xù)更新中】,Django實現(xiàn)測試平臺,Django/flask,django,自動化,python文章來源地址http://www.zghlxwxcb.cn/news/detail-585884.html

到了這里,關(guān)于Django實現(xiàn)接口自動化平臺(九)環(huán)境envs序列化器及視圖【持續(xù)更新中】的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務器費用

相關(guān)文章

  • Django實現(xiàn)接口自動化平臺(八)測試報告reports序列化器及視圖【持續(xù)更新中】

    上一章: Django實現(xiàn)接口自動化平臺(七)數(shù)據(jù)庫設計_做測試的喵醬的博客-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日
    瀏覽(19)
  • Django實現(xiàn)接口自動化平臺(十二)自定義函數(shù)模塊DebugTalks 序列化器及視圖【持續(xù)更新中】

    Django實現(xiàn)接口自動化平臺(十二)自定義函數(shù)模塊DebugTalks 序列化器及視圖【持續(xù)更新中】

    上一章: Django實現(xiàn)接口自動化平臺(十一)項目模塊Projects序列化器及視圖【持續(xù)更新中】_做測試的喵醬的博客-CSDN博客 本章是項目的一個分解,查看本章內(nèi)容時,要結(jié)合整體項目代碼來看: python django vue httprunner 實現(xiàn)接口自動化平臺(最終版)_python+vue自動化測試平臺_做測

    2024年02月16日
    瀏覽(22)
  • Django實現(xiàn)接口自動化平臺(十四)測試用例模塊Testcases序列化器及視圖【持續(xù)更新中】

    Django實現(xiàn)接口自動化平臺(十四)測試用例模塊Testcases序列化器及視圖【持續(xù)更新中】

    相關(guān)文章: Django實現(xiàn)接口自動化平臺(十三)接口模塊Interfaces序列化器及視圖【持續(xù)更新中】_做測試的喵醬的博客-CSDN博客 本章是項目的一個分解,查看本章內(nèi)容時,要結(jié)合整體項目代碼來看: python django vue httprunner 實現(xiàn)接口自動化平臺(最終版)_python+vue自動化測試平臺

    2024年02月17日
    瀏覽(23)
  • 基于 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 的接口自動化測試平臺,生產(chǎn)可用。 此外,非常感謝 花菜。沒有 AnotherFasterRunner 就不會有 LunarLink ?? ?? Django ?? Django Rest framework ?? Vue.js ?? Element UI ?? django-celery-beat(定時任務) ??

    2024年04月11日
    瀏覽(23)
  • Django+vue自動化測試平臺(7)-- 使用Selenium+vue實現(xiàn)WebUI自動化及結(jié)果展示

    Django+vue自動化測試平臺(7)-- 使用Selenium+vue實現(xiàn)WebUI自動化及結(jié)果展示

    Selenium是一個用于Web應用程序測試的工具。Selenium測試直接運行在瀏覽器中,就像真正的用戶在操作一樣。支持的瀏覽器包括IE(7, 8, 9, 10, 11),Mozilla Firefox,Safari,Google Chrome,Opera,Edge等。這個工具的主要功能包括:測試與瀏覽器的兼容性——測試應用程序看是否能夠很好得

    2024年02月14日
    瀏覽(27)
  • Vue實現(xiàn)自動化平臺(四)--接口管理頁面的實現(xiàn)

    Vue實現(xiàn)自動化平臺(四)--接口管理頁面的實現(xiàn)

    上一章: Vue實現(xiàn)自動化平臺(三)_做測試的喵醬的博客-CSDN博客 github地址:https://github.com/18713341733/vuemiaotest? 這個目前只是用來練手的,項目還沒成型。等以后我寫完了,再更新一下項目鏈接。? ? 這個頁面樣式,與我們上一章 項目管理的頁面樣式展示基本一樣。 所以樣式

    2023年04月16日
    瀏覽(18)
  • 搭建Django+pyhon+vue自動化測試平臺

    搭建Django+pyhon+vue自動化測試平臺

    Django安裝 使用管理員身份運行pycharm使用local ???檢查django是否安裝成功 ? ? 創(chuàng)建項目 cd 切換至創(chuàng)建的項目中啟動django項目 啟動項目 點擊連接跳轉(zhuǎn)至瀏覽器 ?更改django為中文settings文件---LANGUAGE_CODE Vue安裝 安裝cnpm,代替npm指令,速度快 ? ? ? ?安裝vue腳手架 ? ? ? ? 切換至

    2024年02月14日
    瀏覽(18)
  • 接口自動化測試平臺

    接口自動化測試平臺

    下載了大神的EasyTest項目demo修改了下https://testerhome.com/topics/12648 原地址。也有看另一位大神的HttpRunnerManagerhttps://github.com/HttpRunner/HttpRunnerManager 原地址,由于水平有限,感覺有點復雜~~~ 【整整200集】超超超詳細的Python接口自動化測試進階教程,真實模擬企業(yè)項目實戰(zhàn)?。??

    2024年02月15日
    瀏覽(29)
  • 接口自動化測試系列-接入測試平臺

    接口自動化測試系列-接入測試平臺

    測試平臺目錄 測試平臺自建源碼 后臺核心代碼 部分前端代碼樣例

    2024年02月10日
    瀏覽(27)
  • 接口測試 react+unittest+flask 接口自動化測試平臺

    目錄 1 前言 2 框架 2-1 框架簡介 2-2 框架介紹 2-3 框架結(jié)構(gòu) 3 平臺 3-1 平臺組件圖

    2024年02月16日
    瀏覽(18)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包