Django はインターフェイス自動化プラットフォームを実装します (12) カスタム関数モジュール DebugTalks シリアライザーとビュー [継続的に更新]

前の章:

Django はインターフェイス自動化プラットフォームを実装します (11) プロジェクト モジュール プロジェクト シリアライザーとビュー [継続的に更新]_テスト ニャー ソース ブログ - CSDN ブログ

この章はプロジェクトの内訳です。この章の内容を参照する場合は、プロジェクト コード全体と併せて参照する必要があります。

Python django vue httprunner はインターフェイス自動化プラットフォーム (最終バージョン) を実装します

1. DebugTalks の背景と関連インターフェイス

1.1 DebugTalks アプリケーション

インターフェイスの自動化、ドライバーは httprunner==1.0 バージョンを使用します。

httprunner には、カスタム関数を記述するための debugtalks.py ファイルがあります。

したがって、プロジェクトを作成すると、debugtalks.py ファイルが自動的に作成されます。プロジェクトは debugtalks.py ファイルに対応します。

1.2 DebugTalk インターフェイス

リクエストメソッド URI 対応するアクション 実現機能
得る /デバッグトーク/ 。リスト() debugtalk リストをクエリする
得る /debugtalks/{id}/ .retrieve() デバッグトークの詳細データを取得する
置く /debugtalks/{id}/ アップデート() データ内のすべてのフィールドを更新する
パッチ /debugtalks/{id}/ .partial_update() データの一部のフィールドを更新する

2. DebugTalk インターフェイス

debugtalksはPythonファイルです

2.1 組み込み関数ファイル一覧.list  ()

 付属のプロジェクトによって生成される組み込み関数ファイル。プロジェクトを作成すると、debugtalk.py ファイルが自動的に作成されます。プロジェクトを削除すると、対応する debugtalk.py ファイルが自動的に削除されます。

得る /デバッグトーク/ 。リスト() debugtalk リストをクエリする

2.2 組み込み関数 file.retrieve()を表示する

得る /debugtalks/{id}/ .retrieve() デバッグトークの詳細データを取得する

ファイルをクリック

 

 

2.3 組み込み関数ファイルの更新 

置く /debugtalks/{id}/ アップデート() データ内のすべてのフィールドを更新する

下部にある「保存」をクリックしてファイルを更新します。

2.4 作成と削除

作成と削除はプロジェクトの作成と削除を伴うため、組み込みファイルの作成と削除はインターフェイスを通じて実装されません。

3. モデルクラスモデル

from django.db import models

from utils.base_models import BaseModel


class DebugTalks(BaseModel):
    id = models.AutoField(verbose_name='id主键', primary_key=True, help_text='id主键')
    name = models.CharField('debugtalk文件名称', max_length=200, default='debugtalk.py', help_text='debugtalk文件名称')
    debugtalk = models.TextField(null=True, default='#debugtalk.py', help_text='debugtalk.py文件')
    project = models.OneToOneField('projects.Projects', on_delete=models.CASCADE,
                                   related_name='debugtalks', help_text='所属项目')

    class Meta:
        db_table = 'tb_debugtalks'
        verbose_name = 'debugtalk.py文件'
        verbose_name_plural = verbose_name
        ordering = ('id',)

    def __str__(self):
        return self.name

このコードは、debugtalk.py ファイルを表す、DebugTalks という名前の Django モデル (Model) クラスを定義します。

このモデル クラスは BaseModel から継承し、次のフィールドが含まれます。

  • id: 自動インクリメントされる主キー フィールド、タイプは AutoField です。
  • name: debugtalk ファイルの名前、タイプは CharField です。
  • debugtalk: debugtalk.py ファイルの内容。タイプは TextField です。
  • project: debugtalk.py ファイルに関連付けられたプロジェクト。1 対 1 (OneToOne) 関係を使用し、タイプはForeignKey (ForeignKey) フィールドで、projects.Projects モデルに関連付けられます。

さらに、モデル クラスは次のメタデータ (Meta) も定義します。

  • db_table: データベース内のテーブルの名前を tb_debugtalks として指定します。
  • verbose_name: モデルのバックグラウンド管理ページに表示される名前は「debugtalk.py ファイル」です。
  • verbose_name_plural: バックグラウンド管理ページに表示されるモデルの複数名も「debugtalk.py ファイル」です。
  • 順序付け: ID フィールドに従って昇順に並べ替えるように指定します。

このモデル クラスを通じて、データベースに tb_debugtalks という名前のテーブルを作成し、debugtalk.py ファイルの情報を保存し、それをプロジェクトに関連付けることができます。

 

4 番目、シリアライザー クラス

from rest_framework import serializers

from .models import DebugTalks


class DebugTalksModelSerializer(serializers.ModelSerializer):
    project = serializers.SlugRelatedField(slug_field='name', read_only=True)

    class Meta:
        model = DebugTalks
        exclude = ('create_datetime', 'update_datetime',)
        extra_kwargs = {
            'debugtalk': {
                'write_only': True
            }
        }


class DebugTalksSerializer(serializers.ModelSerializer):

    class Meta:
        model = DebugTalks
        fields = ('id', 'debugtalk')

2 つのシリアライザー クラスが定義されています。

1. DebugTalksModelSerializer クラスは、DRF の ModelSerializer を継承します。の:

  • プロジェクト フィールドは、SlugEveryone を使用して、DebugTalks モデルに関連付けられたプロジェクト フィールドを name 属性として表示します。これは読み取り専用 (read_only=True) です。
  • Meta 内部クラスで指定されたモデルは DebugTalks であり、create_datetime フィールドと update_datetime フィールドは除外されます。
  • extra_kwargs は、debugtalk フィールドの追加属性を定義します。ここでは書き込み専用 (write_only=True) に設定されています。

2. DebugTalksSerializer クラスも、DRF の ModelSerializer から継承します。の:

  • Meta 内部クラスで指定されたモデルは DebugTalks で、id と debugtalk の 2 つのフィールドのみが含まれます。

これらのシリアライザーを使用して、DebugTalks モデル インスタンスを JSON 形式のデータに変換したり、JSON データを DebugTalks モデル インスタンスに逆シリアル化したりできます。さまざまなフィールドと属性を定義することで、特定のニーズに合わせてデータを検証、作成、更新できます。

5. 見る

from rest_framework import viewsets
from rest_framework.decorators import action
from rest_framework import permissions
from .models import DebugTalks
from rest_framework import mixins
from . import serializers


class DebugTalksViewSet(mixins.ListModelMixin,
                        mixins.RetrieveModelMixin,
                        mixins.UpdateModelMixin,
                        viewsets.GenericViewSet):

    queryset = DebugTalks.objects.all()
    serializer_class = serializers.DebugTalksModelSerializer
    permission_classes = [permissions.IsAuthenticated]

    def get_serializer_class(self):
        return serializers.DebugTalksSerializer if self.action == 'retrieve' else self.serializer_class

まず、必要なライブラリとモジュールがインポートされます。

  • fromrest_framework import viewets は、DRF のビューセットをインポートします。
  • fromrest_framework.decorators import action は、カスタム アクションを定義するための DRF デコレータをインポートします。
  • fromrest_framework import 権限は、DRF の権限クラスをインポートします。
  • from .models import DebugTalks は、現在のプロジェクトに DebugTalks モデル クラスをインポートします。
  • fromrest_framework import mixins は、DRF の Mixin クラスをインポートします。
  • from . importserializers は、現在のプロジェクトにシリアライザーをインポートします。

次に、DRF によって提供されるさまざまな Mixin クラスおよび GenericViewSet クラスを継承する DebugTalksViewSet クラスが定義されます。の:

  • mixins.ListModelMixinはリスト表示機能を提供します。
  • mixins.RetrieveModelMixin は詳細表示機能を提供します。
  • mixins.UpdateModelMixin は更新機能を提供します。
  • viewsets.GenericViewSet は汎用ビューセット クラスです。

次のプロパティとメソッドがクラスで定義されています。

  • queryset 属性は、ビュー セットのクエリ セット、つまり操作する必要があるデータ セットを指定します。ここでは DebugTalks.objects.all() を指定します。これは、DebugTalks モデルのすべてのインスタンスを取得することを意味します。
  • serializer_class は、デフォルトで使用されるシリアライザー クラスを、serializers.DebugTalksModelSerializer として指定します。
  • Permission_classes は、デフォルトの権限クラスを Permissions.IsAuthenticated として指定します。これは、認証されたユーザーのみがビュー セットにアクセスできることを意味します。

次に、カスタム メソッド get_serializer_class() が定義され、さまざまなアクションに従ってどのシリアライザー クラスを使用するかを決定します。アクションが取得の場合 (詳細が表示されます)、serializers.DebugTalksSerializer を使用します。それ以外の場合は、デフォルトのシリアライザー クラスを使用します。

これらの構成と定義を通じて、DebugTalksViewSet クラスはリスト表示、詳細表示、更新機能を提供し、さまざまなアクションに応じてデータのシリアル化と逆シリアル化の操作に適切なシリアライザー クラスを選択できます。同時に、ビュー セットには権限制御もあり、認証されたユーザーのみがアクセスできます。

 

おすすめ

転載: blog.csdn.net/qq_39208536/article/details/131748312