项目实战: CMDB自动化资产扫描——2、模型层设计

1、项目工程设计

当用户发起HTTP请求时, Django的采集接口将HTTP请求的头部信息headers里面的IP和UA信息
采集, 并存储到数据库中。 当用户想要访问采集数据时, 从数据库中读取,以界面的方式展示给
用户。
在这里插入图片描述

2、数据库模型层models

在这里插入图片描述

  • 一个类对应一个数据库表;
  • 类的一个属性对应数据库表的一个表头;
  • max_length: 字符串最大长度, 对应数据库的varchar类型
  • default: 指定默认值
  • verbose_name: 指定Django后台显示的列头信息
  • auto_now: 每次修改记录时自动更新为当前时间
  • Meta类的设置
  • verbose_name: 指定Django后台显示的表名称单数
  • verbose_name_plural: 指定Django后台显示的表名称复数
  • db_table: 指定数据库表的名称, 默认是APP名称_类名称.
from django.db import models
class Server(models.Model):
    """服务器设备"""
    server_type_choice = ((0, 'PC服务器'),
                          (1, '刀片机'),
                          (2, '小型机'),
                          )
    add_type_choice = (('auto', '自动添加'),
                       ('manual', '手工录入'),
                       )
    asset_type = models.SmallIntegerField(choices=server_type_choice, default=0, verbose_name="服务器类型")
    add_type = models.CharField(choices=add_type_choice, max_length=32, default='auto', verbose_name="添加方式")
    hosted_on = models.ForeignKey('self', related_name='hosted_on_server', blank=True, null=True, verbose_name="宿主机",on_delete=models.CASCADE)
    # 虚拟机专用字段
    IP = models.CharField('IP地址', max_length=30, default='')
    MAC = models.CharField('Mac地址', max_length=200, default='')
    model = models.CharField(max_length=128, null=True, blank=True, verbose_name='服务器型号')
    hostname = models.CharField(max_length=128, null=True, blank=True, verbose_name="主机名")
    os_type = models.CharField('操作系统类型', max_length=64, blank=True, null=True)
    os_distribution = models.CharField('发行商', max_length=64, blank=True, null=True)
    os_release = models.CharField('操作系统版本', max_length=64, blank=True, null=True)

    def __str__(self):
        return self.hostname

    class Meta:
        verbose_name = '服务器'
        verbose_name_plural = "服务器"
  • model.py文件做了修改后一定要生成迁移脚本并写入数据库
python manage.py makemigrations
python manage.py migrate
# 创建超级用户用于后台登录
python manage.py createsuperuser

3、后台Admin管理admin.py

from django.contrib import admin
from .models import  Server
# Register your models here.
admin.site.register(Server)

测试:后台登录

python manege.py runserver ##运行程序

登录网址http://127.0.0.1:8000/admin
在这里插入图片描述


版权声明:本文为qq_27172205原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。