当前位置: 首页 > ops >正文

python开发api平台雏形

api平台雏形

一、Django基本配置

1.1使用pycherm创建项目

![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/cd4fb791ea58408c86453c760e595f3f.png

1.2 运行项目

在这里插入图片描述

1.3 创建app

python.exe .\manage.py startapp cmdb

在这里插入图片描述

1.4 settings.py添加app

在这里插入图片描述

1.5 settings.py设置数据库

DATABASES = {'default': {'ENGINE': 'django.db.backends.mysql','NAME': 'devopsapi','USER': 'root','PASSWORD': '123456','HOST': '192.168.110.141','PORT': '3306',}
}

准备数据库
在这里插入图片描述

在这里插入图片描述
终端:使用pip工具安装:

pip3 install pymysql

![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/6436b117639c461ead14259fd96d00bf.p
指定数据库驱动,在devops_api/init.py文件,添加如下:

import pymysql
pymysql.install_as_MySQLdb()

二、数据库模型

2.1 定义数据库模型

路径:cmdb/models.py

from django.db import models# Create your models here.
from django.db import models
from system_config.models import Credentialclass Idc(models.Model):name = models.CharField(max_length=30, unique=True, verbose_name="机房名称")  # unique=True,字段不能为空city = models.CharField(max_length=20, verbose_name="城市")provider = models.CharField(max_length=30, verbose_name="提供商")note = models.TextField(blank=True, verbose_name="备注")  # blank=True,字段可以为空create_time = models.DateTimeField(auto_now_add=True, verbose_name="创建时间")class Meta:db_table = "cmdb_idc"verbose_name_plural = "IDC机房"ordering = ('-id',)def __str__(self):return self.nameclass ServerGroup(models.Model):name = models.CharField(max_length=30, unique=True, verbose_name="分组名称")note = models.TextField(blank=True, null=True, verbose_name="备注")create_time = models.DateTimeField(auto_now_add=True, verbose_name="创建时间")class Meta:db_table = "cmdb_server_group"verbose_name_plural = "主机分组"ordering = ('-id',)def __str__(self):return self.nameclass Server(models.Model):idc = models.ForeignKey(Idc, on_delete=models.PROTECT, verbose_name="IDC机房")  # 服务器与机房一对多关系server_group = models.ManyToManyField(ServerGroup, default="Default", verbose_name="主机分组")  # 多对多credential = models.ForeignKey(Credential,blank=True,null=True,on_delete=models.PROTECT,verbose_name='SSH凭据')  # 服务与凭据一对多关系name = models.CharField(max_length=30, verbose_name="名称")hostname = models.CharField(max_length=30, unique=True, verbose_name="主机名")ssh_ip = models.GenericIPAddressField(verbose_name="SSH IP")ssh_port = models.IntegerField(verbose_name="SSH端口")note = models.TextField(blank=True, null=True, verbose_name="备注")machine_type = models.CharField(max_length=30, blank=True,choices=(('vm', '虚拟机'), ('cloud_vm', '云主机'), ('physical_machine', '物理机')),verbose_name="机器类型")os_version = models.CharField(max_length=50, blank=True, null=True, verbose_name="系统版本")public_ip = models.JSONField(max_length=100, blank=True, null=True, verbose_name="公网IP")private_ip = models.JSONField(max_length=100, blank=True, null=True, verbose_name="内网IP")cpu_num = models.CharField(max_length=10, blank=True, null=True, verbose_name="CPU")cpu_model = models.CharField(max_length=100, blank=True, null=True, verbose_name="CPU型号")memory = models.CharField(max_length=30, blank=True, null=True, verbose_name="内存")disk = models.JSONField(max_length=200, blank=True, null=True, verbose_name="硬盘")put_shelves_date = models.DateField(null=True, blank=True, verbose_name="上架日期")off_shelves_date = models.DateField(null=True, blank=True, verbose_name="下架日期")expire_datetime = models.DateTimeField(blank=True, null=True, verbose_name="租约过期时间")is_verified = models.CharField(max_length=10, blank=True,choices=(('verified', '已验证'), ('unverified', '未验证')), default='unverified',verbose_name="SSH验证状态")update_time = models.DateTimeField(auto_now_add=True, verbose_name="更新时间")create_time = models.DateTimeField(auto_now_add=True, verbose_name="创建时间")class Meta:db_table = "cmdb_server"verbose_name_plural = "主机管理"ordering = ('-id',)def __str__(self):return self.hostname

2.2 数据库迁移

python manage.py makemigrations
python manage.py migrate

在这里插入图片描述

三、创建序列化文件

3.1 安装Django和DRF。DRF可以通过pip安装,命令如下:

pip install djangorestframework

在这里插入图片描述

3.2 settings.py添加restframework

在这里插入图片描述

3.3 创建序列化文件serializers.py

路径:cmdb/serializers.py

from cmdb.models import Idc, ServerGroup, Server
from rest_framework import serializersclass IdcSerializer(serializers.ModelSerializer):"""IDC机房序列化类"""class Meta:model = Idcfields = "__all__"read_only_fields = ("id",)  # 仅用于序列化(只读)字段,反序列化(更新)可不传class ServerGroupSerializer(serializers.ModelSerializer):"""主机分组序列化类"""class Meta:model = ServerGroupfields = "__all__"read_only_fields = ("id",)class ServerSerializer(serializers.ModelSerializer):"""服务器序列化类"""idc = IdcSerializer(read_only=True)  # 一对多server_group = ServerGroupSerializer(many=True, read_only=True)  # 多对多class Meta:model = Serverfields = "__all__"read_only_fields = ("id",)
http://www.xdnf.cn/news/6399.html

相关文章:

  • 【Java Web】速通JSON
  • How to initialize Linux Mint 22.1 Desktop Operating System
  • 七彩喜数字康养平台:技术驱动下的银发经济范式革命
  • 腾讯开源实时语音大模型VITA-audio,92mstoken极速响应,支持多语言~
  • 模仿学习笔记
  • Xinference 命令大全:从模型部署到管理
  • 《从零开始入门递归算法:搜索与回溯的核心思想 + 剑指Offer+leetcode高频面试题实战(含可视化图解)》​
  • 拷贝构造函数如果不加引用会怎样?
  • 【搭建Node-RED + MQTT Broker实现AI大模型交互】
  • 乐观锁、悲观锁、分布式锁
  • 金仓数据库使用sys_walfile_name函数时的时间线问题排查指南
  • [MySQL数据库] SQL优化
  • C++ asio网络编程(6)利用C11模拟伪闭包实现连接的安全回收
  • 牛客网NC22012:判断闰年问题详解
  • 串口共用错误排查指南(2025年5月15日 09:25)
  • 实战分析Cpython逆向
  • 树节点数据处理:属性拼接
  • scratch课后一练--运动模块
  • C++从入门到实战(十五)String(上)介绍STL与String的关系,为什么有string类,String有什么用
  • u3d 定义列表详细过程
  • 如何使用易路iBuilder智能体平台快速安全深入实现AI HR【实用帖】
  • 【实战篇】低代码报表开发——平台运营日报表的开发实录
  • Vue3 本地环境 Vite 与生产环境 Nginx 反向代理配置方法汇总【反向代理篇】
  • 《无限暖暖》画质测评
  • Python函数返回值的艺术:为何True/False是更优实践及例外情况分析
  • 自定义类型:结构体
  • 动态防御实战:如何用智能调度化解T级DDoS攻击
  • 【J2】乘法逆元
  • 【FileZilla】Client端的线程模型 (一)
  • Linux的进程管理和用户管理