上一章:
二、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框架太强了