三、django-vue-admin开源项目二次开发——后端快速实现curd及接口

news2024/11/9 9:41:27

上一章:

二、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框架太强了

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/624161.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Postgresql关于JSON、JSONB的操作符、处理函数(持续更新)

一、postgresql实用函数 &#xff08;只列举本次用到的函数&#xff0c;其他函数在文章后面有详解&#xff09; 1.1、将jsonb格式的数组中的值展开/分解成单独的数据/对象&#xff1f; SELECT answer_id, jsonb_array_elements(option_ids)::INTEGER AS option_id FROM db_l…

Java HashMap初始化大小设置多少合适

修改公司老代码的时候&#xff0c;发现阿里编码规约插件提示HashMap初始化时尽量指定初始值大小&#xff0c;因为设置合理的初始值可以提升性能&#xff1a; HashMap继承自AbstractMap类&#xff0c;实现了Map、Cloneable、java.io.Serializable接口&#xff0c;是基于散列表实…

Prompt 工程指南(三)—— 高级技术篇之零样本和少样本提示

到目前为止&#xff0c;显而易见的是&#xff0c;改进提示有助于在不同任务上获得更好的结果。这就是提示工程背后的理念和目标。 虽然上篇教程介绍的基本示例已经很有趣&#xff0c;但在接下来的几篇教程中&#xff0c;我们将介绍更高级的 Prompt 提示工程技巧&#xff0c;使…

LabVIEW编程开发PCB测试仪

LabVIEW编程开发PCB测试仪 使用PXI和LabVIEW的PCB钉床测试仪 用于PCB&#xff08;印刷电路板&#xff09;的钉床测试仪&#xff0c;使用PXI和LabVIEW。一家电子制造公司需要测试仪来测试他们的PCB产品。钉床测试仪是一种具有连接到电路板上各个测试点的引脚的测试。电路板需要…

【大数据学习篇12】在linux上安装jupyter

下面介绍在liunx怎么安装jupyter&#xff0c;一步到位介绍。 1、安装Anaconda3 1.1 自己选择一个位置下载 wget https://repo.continuum.io/archive/Anaconda3-5.0.1-Linux-x86_64.sh1.2 进入自己的安装目录&#xff0c;安装anaconda bash Anaconda3-5.2.0-Linux-x86_64.sh一…

小程序模板语法样式与页面配置

文章和代码已经归档至【Github仓库&#xff1a;https://github.com/timerring/front-end-tutorial 】或者公众号【AIShareLab】回复 小程序 也可获取。 文章目录 小程序模板与配置WXML 模板语法数据绑定事件绑定小程序中常用的事件事件对象的属性列表target 和 currentTarget 的…

spark入门 高可用部署HA(五)

一、standalone基于修改部署 https://blog.csdn.net/weixin_43205308/article/details/131070277?spm1001.2014.3001.5501 二、安装ZOOKEEPER zookeeper 安装下载与集群 三、修改conf下的spark-env.sh vim conf/spark-env.sh注释以下内容&#xff08;根据自己环境修改&am…

备战金九银十:大厂面试官必问MySQL连环炮全梳理,你扛得住嘛?

最近后台好多小伙伴发私信咨询阿Q&#xff0c;问马上就是金九银十的面试黄金期了&#xff0c;该如何在三个月内突击一下&#xff0c;以便更好地通过面试呢&#xff1f; 阿Q的想法就是需要对自己掌握的知识进行归纳整理&#xff0c;系统的、分类的去复习相关的知识点。这样也能…

公司新来了个00后测开,上来一顿操作给我秀麻了.....

开年公司新来了个同事&#xff0c;听说大学是学的广告专业&#xff0c;因为喜欢IT行业就找了个培训班&#xff0c;后来在一家小公司实习半年&#xff0c;现在跳槽来我们公司。来了之后把现有项目的性能优化了一遍&#xff0c;服务器缩减一半&#xff0c;性能反而提升4倍!给公司…

提升效率:P4VFS让虚拟文件同步更迅速、更简单

虚拟文件同步&#xff08;Virtual File Sync&#xff09;是一个备受期待的功能集&#xff0c;能够显著缩短Perforce Helix Core用户的同步时间。本篇文件将解释什么是虚拟文件同步&#xff0c;如何设置它以及如何使用它。 什么是虚拟文件同步&#xff1f; 虚拟文件同步是一项…

配置Wildfly的JDBC驱动程序

1、环境 windows10、Wildfly26.1.3、JDK8.0、mysql8.0 2、配置方式 配置Wildfly的JDBC驱动一般有两种方式 1️⃣、以module的方式安装&#xff1b; 2️⃣、以应用deploy的程序包方式安装&#xff1b; 以module方式安装&#xff0c;是把驱动置于应用服务器中&#xff1b;以…

Ubuntu 20.04 Apache2 增加不同端口站点

概述 Apache HTTP Server&#xff08;简称Apache&#xff09;是Apache软件基金会的一个开放源码的网页服务器软件&#xff0c;可以在大多数电脑操作系统中运行。由于其跨平台和安全性[注 1]&#xff0c;被广泛使用&#xff0c;是最流行的Web服务器软件之一。它快速、可靠并且可…

ROS:move_base路径规划介绍、更换全局路径规划算法(A star、Dijkstra、DWA,测试当前是哪种算法,效果展示图)

前提&#xff1a;需要安装navigation包&#xff0c;才可以运行move_base。 一.move_base路径规划包内容 二.更换全局路径规划算法&#xff08;A*、Dijkstra、DWA&#xff09; A*、Dijkstra属于全局路径规划、DWA属于局部路径规划。 1、move_base.launch move_base.launch文…

开源 AI 面临的挑战

译者&#xff1a;明明如月 人工智能的代价 尽管我坚信开源人工智能将继续蓬勃发展&#xff0c;但我也认为未来几年企业和政府将越来越有动机限制对新型神经网络架构和技术的应用。本文旨在预测并概述可能在本十年发生的潜在颠覆性变革&#xff0c;并提出一些想法和解决方案&a…

玩转css逐帧动画,努力成为更优质的Ikun~

&#x1f389; 一、前言 css3的animation想必大家都知道吧&#xff0c;那 steps 逐帧动画你知道吗&#xff1f;对于我来说&#xff0c;实际工作及练习中也很少用到这种跳跃式变化的动画&#xff0c;而它start和end的解释又比较“不说人话”&#xff0c;以前用到steps动画的时候…

FL Studio21水果软件各个版本功能区别对比

作为音乐人&#xff0c;在电脑上进行编曲&#xff0c;混音&#xff0c;合成是家常便饭&#xff0c;而市面上大家常用的音乐编曲制作软件很多&#xff0c;小编在这里就给大家做一个推荐。 大家常听到的音乐编曲制作软件大多是Cubase、Nuendo、Pro Tools、 SONAR等等&#xff0c…

Qt中QFile类读取ansi编码格式txt文件,在QTextEdit控件中显示乱码

系列文章目录 文章目录 系列文章目录前言一、依然无法解决乱码问题二、解决办法1.方法一&#xff1a;使用QString的fromLocal8Bit()函数2.读取utf-8编码格式的文件 总结 前言 使用Qt中的QFile类读取ANSI编码格式的文本文件&#xff0c;并在QTextEdit控件中显示乱码&#xff0c…

适配器模式的运用

文章目录 一、适配器模式的运用1.1 介绍1.2 适配器模式结构1.3 类适配器模式1.3.1 类适配器模式类图1.3.2 代码 1.4 对象适配器模式1.4.1 对象适配器模式类图1.4.2 代码 1.5 应用场景1.6 JDK源码解析1.6.1 字节流到字符流的转换类图1.6.2 部分源码分析1.6.3 总结 一、适配器模式…

MyBatis的使用、Spring AOP、Spring事务

一、MyBatis 的使用 1、环境配置 1.1、建库建表 -- 创建数据库 drop database if exists mycnblog; create database mycnblog DEFAULT CHARACTER SET utf8mb4;-- 使⽤数据数据 use mycnblog;-- 创建表[⽤户表] drop table if exists userinfo; create table userinfo(id in…

智能算法终极大比拼,以CEC2017测试函数为例,十种智能算法直接打包带走,不含任何套路!

包含人工蜂群(ABC)、灰狼(GWO)、差分进化(DE)、粒子群(PSO)、麻雀优化(SSA)、蜣螂优化(DBO)、白鲸优化(BWO)、遗传算法(GA)、粒子群算法(PSO)&#xff0c;基于反向动态学习的差分进化算法&#xff0c;共十种算法&#xff0c;直接一文全部搞定&#xff01; 还是老规矩&#xff…