上一章:

二、django-vue-admin开源项目二次开发——修改默认菜单_做测试的喵酱的博客-CSDN博客

下一章:

一、背景

我想实现接口自动化用例的管理功能。一共涉及到两张表,一张项目表,是所有的项目列表。

一张是case列表,不同的项目,有属于该项目的case数据。

二、创建 应用

创建两个应用,一个是项目 api_projects 应用,一个是接口case应用api_interfaces

1、创建django app

python manage.py startapp api_projects 
python manage.py startapp api_interfaces 

2、在setting.py中注册应用

application/settings.py 文件

三、设计数据库模型

3.1 项目表数据库模型

api_projects/models.py

from django.db import models

# Create your models here.
from django.db import models

# Create your models here.

from dvadmin.utils.models import CoreModel

class ApiProjects(CoreModel):
    """
    所有接口自动化项目的列表
    """
    name = models.CharField(verbose_name='项目名称', help_text='项目名称', max_length=30, unique=True)
    class Meta:
        # db_table指定创建的数据表名称
        db_table = 'tb_api_projects'
        # 为当前数据表设置中文描述信息
        verbose_name = '所有接口自动化项目的列表'
        verbose_name_plural = '所有接口自动化项目的列表'
        ordering = ['id']

    def __str__(self):
        return f"接口自动化项目名称:{self.name}"

3.2 项目表序列化器

api_projects/serializers.py

# -*- coding:utf-8 -*-
# @Author: 喵酱
# @time: 2023 - 06 -02
# @File: serializers.py
# desc:
from rest_framework import serializers
from rest_framework.validators import UniqueValidator
from .models import ApiProjects

class ApiProjectsModelSerializer(serializers.ModelSerializer):
    """
    定义模型序列化器类
    1、继承serializers.ModelSerializer类或者其子类
    2、需要在Meta内部类中指定model、fields、exclude类属性参数
    3、model指定模型类(需要生成序列化器的模型类)
    4、fields指定模型类中哪些字段需要自动生成序列化器字段
    5、会给id主键、指定了auto_now_add或者auto_now参数的DateTimeField字段,添加read_only=True,仅仅只进行序列化输出
    6、有设置unique=True的模型字段,会自动在validators列表中添加唯一约束校验<UniqueValidator
    7、有设置default=True的模型字段,会自动添加required=False
    8、有设置null=True的模型字段,会自动添加allow_null=True
    9、有设置blank=True的模型字段,会自动添加allow_blank=True
    """
    class Meta:
        model = ApiProjects
        fields = '__all__'

3.3 编写项目表视图views

api_projects/views.py

from django.shortcuts import render

# Create your views here.
from django.shortcuts import render

# Create your views here.
import logging

from django.http import JsonResponse
from rest_framework.request import Request
from rest_framework.response import Response
from rest_framework.views import APIView
from rest_framework.generics import GenericAPIView
from rest_framework import status
from rest_framework import filters
from rest_framework import mixins
from rest_framework import generics
from rest_framework import viewsets
from rest_framework.decorators import action
from rest_framework import permissions

from .models import ApiProjects
from .serializers import ApiProjectsModelSerializer



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

    retrieve:
    获取项目详情数据

    update:
    更新项目信息

    names:
    获取项目名称

    """
    queryset = ApiProjects.objects.all()
    serializer_class = ApiProjectsModelSerializer

    filter_backends = [filters.SearchFilter, filters.OrderingFilter]
    # 搜索引擎
    search_fields = ['name']
    # 排序引擎
    ordering_fields = ['id']
    # pagination_class = PageNumberPagination

    # 在继承了APIView的类视图中,可以使用permission_classes类属性指定权限类,值为列表,可添加多个权限类
    # permission_classes = [permissions.IsAuthenticated]

    # 在继承了APIView的类视图中,可以使用authentication_classes类属性指定认证类,值为列表,可添加多个认证类
    # 优秀级高于全局,一般无需在特定类视图中指定
    # authentication_classes = []


3.4 接口自动化case表模型设计 

3.5 接口自动化case序列化器类

3.6 编写自动化case表视图views

四、新建urls.py并添加路由

api_projects/urls.py

from rest_framework import routers
from . import views
# 1、可以使用路由器对象,为视图集类自动生成路由条目
# 2、路由器对象默认只为通用action(create、list、retrieve、update、destroy)生成路由条目,自定义的action不会生成路由条目
# 3、创建SimpleRouter路由对象
router = routers.SimpleRouter()
# 4、使用路由器对象调用register方法进行注册

router.register(r'apiProjects', views.ApiProjectsViewSet)
# 5、第一个传参:prefix指定路由前缀
# 6、第二个传参:viewset指定视图集类,不可调用as_view

urlpatterns = [
]
urlpatterns += router.urls

五、在application的urls里导入我们的app

path('',include('api_projects.urls')),

注意:

这里是应用名.urls

 

 

 

六、迁徙我们的app

python manage.py makemigrations
python manage.py migrate

六、启动项目,查看接口文档

启动项目:

python3 manage.py runserver 0.0.0.0:8000

查看接口文档:

http://0.0.0.0:8000/

 自动生成了 项目的增删改查,drf框架太强了

 

Logo

前往低代码交流专区

更多推荐