欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 房产 > 家装 > python开发api平台雏形

python开发api平台雏形

2025/5/16 10:51:07 来源:https://blog.csdn.net/xhx94/article/details/147986691  浏览:    关键词: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",)

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词