前の章:
この章はプロジェクトの内訳です。この章の内容を参照する場合は、プロジェクト コード全体と併せて参照する必要があります。
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 クラスはリスト表示、詳細表示、更新機能を提供し、さまざまなアクションに応じてデータのシリアル化と逆シリアル化の操作に適切なシリアライザー クラスを選択できます。同時に、ビュー セットには権限制御もあり、認証されたユーザーのみがアクセスできます。