day112-django_CMDB系统开发一

CMDB系统开发一

一、CMDB相关概念

1、概念介绍

​ CMDB(配置管理数据库)存储与管理企业IT架构中设备的各种配置信息,它与所有服务支持和服务交付流程都紧密相联,支持这些流程的运转、发挥配置信息的价值,同时依赖于相关流程保证数据的准确性。

​ 服务器集群或者分布式服务器 几十台、上百台,服务器相关数据信息,管理不方便。通过资产管理的方式,通过CMDB系统实现。

github一些开源的cmdb系统:https://github.com/search?q=cmdb

2、需求分析

本次开发的CMDB系统实现以下模块:

1、用户管理模块

2、用户组管理模块

3、权限管理模块

4、资产主机模块

5、资产机房模块

6、资产用户模块

概括一下,本次学习开发的CMDB,是一个收集服务器信息,实现服务器信息可视化,给自动化运维监控提供数据统计和展示等基础服务

3、设计实现

CMDB使用关系图示:

在这里插入图片描述

本次开发的CMDB系统结构图示:

在这里插入图片描述

二、创建CMDB项目

1、创建项目

①使用Pycharm创建Django项目

在这里插入图片描述

在这里插入图片描述

②打开查看项目

在这里插入图片描述

2、默认初始化配置

①配置静态资源目录

创建static文件夹

在这里插入图片描述

settings.py配置

在这里插入图片描述

②配置时区和语言

在这里插入图片描述

3、数据库配置

①创建数据库

CREATE DATABASE syscmdb DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

②配置数据库

settings.py

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'syscmdb',
        'USER': 'root',
        'PASSWORD': 'root',
        'HORT': '127.0.0.1',
        'PORT': '3306',
        'OPTIONS': {
            "init_command": "SET sql_mode='STRICT_TRANS_TABLES'"
        }
    }
}

在这里插入图片描述

_ini_.py

在这里插入图片描述

③迁移数据库

在这里插入图片描述

查看生成的数据表

在这里插入图片描述

三、管理后台布局

1、后台前端模板介绍

使用INSPINIA模板,实现管理后台的前端模板页面

在这里插入图片描述

2、基础页面布局

先定义一个基础页面,包含各个页面中的公共部分,方便其他页面继承。

①部署静态资源

在这里插入图片描述

②在应用下建立模板目录,方便之后分开管理

在这里插入图片描述

③定义路由

在这里插入图片描述

2.x以上版本

from django.contrib import admin
from django.urls import path,include
urlpatterns = [
	path('admin/', admin.site.urls),
	path('dashborad/',include('dashboard.urls'))
]

在这里插入图片描述

2.x以上版本

from django.urls import path
from  dashboard.views import *
urlpatterns = [
   path('base/',BaseView.as_view())
]

④类视图

在这里插入图片描述

⑤模板页面

可以通过模板页面,进行修改。或者直接使用修改好的模板

注意静态资源路径的修改和替换

在这里插入图片描述

⑥查看效果

在这里插入图片描述

Tip:如果遇到静态资源无法加载的情况,注意查看settings.py里的静态资源目录配置是否正确。

在这里插入图片描述

以上页面视图和页面,作为测试使用。

3、首页面实现

①路由

RediretView 重定向 URL跳转

在这里插入图片描述

在这里插入图片描述

②视图

在这里插入图片描述

③模板

在这里插入图片描述

④查看效果

在这里插入图片描述

4、高级视图类之TemplateView

TemplateView,这个类封装了View提供了更强大的功能。

使用TemplateView,加载渲染页面

①使用TemplateView

在这里插入图片描述

Tip:实现原理

在这里插入图片描述

②视图传输数据到模板

Tip:实现方法

在这里插入图片描述

通过重写父类,传输数据信息

在这里插入图片描述

③在模板中调用

在这里插入图片描述

④查看显示效果

在这里插入图片描述

四、登录管理

1、登录基本实现

实现完成首页面后,为了能够更加安全,就需要实现一个登录功能,只有登录之后,才能够查看管理后台。

登录页面实现后的效果:

在这里插入图片描述

①路由

在这里插入图片描述

②视图

在这里插入图片描述

③在后端接收用户传输的数据

登录基础原理:前端页面输入账号密码===》后端接收信息参数 ===》类视图判断校验

模板页面通过ajax post请求发送数据

在这里插入图片描述

在这里插入图片描述

后端视图接收数据

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

④校验账号和密码并返回数据

在这里插入图片描述

Tip:使用返回json数据格式的声明

from django.http import JsonResponse

模板修改

在这里插入图片描述

显示效果

在这里插入图片描述

在这里插入图片描述

⑤美化提示窗口

模板引入sweetaltert js库

在这里插入图片描述

实现方式

在这里插入图片描述

实现效果

在这里插入图片描述

⑥js表单验证 jquery.validate

引入js文件, jquery.validate 是基于jquery的,所有需要先引入jquery

在这里插入图片描述

校验代码

在这里插入图片描述

实现效果

在这里插入图片描述

2、Django的用户系统实现登录

以上操作,只是实现了登录的基本校验操作,但是没有用户信息,所有实际是不能够使用。

在Django中,提供了整个一套的登录相关方法,可以直接导入调用即可。

from django.contrib.auth import login, logout, authenticate

authenticate():就是用来验证用户的账号密码,如果验证成功就会返回一个User对象,如果失败就会返回None。

login():用来真正执行登录的函数,这里也会生成session存储进数据库。

logout():用来注销用户的。

①实现登录功能

视图

在这里插入图片描述

在这里插入图片描述

模板

在这里插入图片描述

②使用manager.py创建用户

注意在创建用户密码的时候,不要太弱,和用户名称邮箱雷同,认为不安全

在这里插入图片描述

在这里插入图片描述

查看最后的登录效果

3、URL拦截器

虽然已经实现了登录系统功能,但是发现即使不通过登录系统,也可以直接通过URL访问管理后台的首页。所以,还需要在首页面上进行登录验证。登录允许访问,没有登录不允许访问。

防止通过URL直接访问 防翻墙

Django中提供了验证方法:

from django.contrib.auth.mixins import LoginRequiredMixin

①添加实现

导入类

在这里插入图片描述

注意一定要最先继承LoginRequireMixin类

在这里插入图片描述

②查看效果

Tip:配置修改默认登录路径

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

4、注销功能实现

注销退出登录功能,使用Django的logout方法实现即可。

注销后,返回登录页面,需要导入类方法

from django.http import HttpResponseRedirect

from django.urls import reverse

注销后通过HttpResponseRedirect跳转页面。

在跳转页面的同时,需要反向去解析URL别名,需要reverse解析方法。

①视图

在这里插入图片描述

在这里插入图片描述

②路由

在这里插入图片描述

②模板

在这里插入图片描述

5、登录原理解析(扩展)

在这里插入图片描述

会话机制,http每次连接默认没有上下联系状态。

cookie 存储在浏览器中的一些信息,具有风险,容易被篡改

在这里插入图片描述

session 存储到服务器的一些信息

在这里插入图片描述

通过查看相关信息,确认流程

退出登录的方式:

①清空cookie

如果在浏览器清除了cookie信息,就会退出登录

cookie里记录了session_id,没有session_id就不能够找到session,所以就被判断为未登录

②清空session

直接删除session信息,虽然cookie在,session没有了,也会判定为未登录

五、用户管理模块

1、展示用户列表

用户登录之后,继续实现用户管理模块。

首先展示用户列表信息,为了方便管理项目应用,创建新应用users,负责用户管理模块用户组管理模块权限管理模块的开发和管理。

①创建新应用

在这里插入图片描述

②配置允许应用

在这里插入图片描述

③路由

2.x以上使用path

在这里插入图片描述

2.x以上使用path

在这里插入图片描述

④视图

在这里插入图片描述

⑤模板

在这里插入图片描述

在这里插入图片描述

上面实现了页面加载,获取数据库用户信息,显示到模板页面

视图

在这里插入图片描述

模板

在这里插入图片描述

为了看到数据动态的效果,可以再通过 django添加用户测试

在这里插入图片描述

2、扩展基础用户表

Django的用户表中,提供了基本必须字段:用户名称、邮箱、密码、角色(超级管理员、普通用户)

需要添加更多的用户信息,需要使用OneToOneField字段对用户表进行拓展。

OneToOneField就是一对一,跟多对一的使用类似,也有正向反向查询

①扩展模型

加入中文名、微信、电话 备注等

导入基础用户模型

在这里插入图片描述

扩展模型

在这里插入图片描述

2.0以上需添加on_delete

②迁移数据表

在这里插入图片描述

③添加测试数据并展示

在这里插入图片描述

④模板输出

在这里插入图片描述

通过判断用户状态,显示不同的显示标识

在这里插入图片描述

最终展示效果:

在这里插入图片描述

3、高级视图类之ListView

上面的案例中使用高级视图类TemplateView,这里再使用另外一个高级视图类ListView

使用ListView 定义模型名称 数据会自动查询 并且组合

视图

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

模板

对应修改默认视图传过来的值

在这里插入图片描述

4、批量创建用户

①编写方法

在这里插入图片描述

②查看

在这里插入图片描述

5、分页实现

一次性展示数据太多了,需要进行分页显示处理。

分页原理

视图

在这里插入图片描述

①通过高级视图ListView实现

视图

在这里插入图片描述

②显示页面按钮

page_obj.has_previous 判断是否有上一页

page_obj.previous_page_number 上一页的页数对象

page_obj.number 当前页数

page_obj.has_next 判断是否有下一页

page_obj.next_page_number 下一页的页面对象

paginator.num_pages 最大页数

paginator. page_range 可迭代的总页数

模板

在这里插入图片描述

③限制输出的页面按钮数量

视图

在这里插入图片描述

模板

在这里插入图片描述

在这里插入图片描述

④显示范围处理

在这里插入图片描述

视图

在这里插入图片描述

Tip:解决当页面不足时,如果向后取页面

在这里插入图片描述

6、添加用户

用户列表展示出来。之前创建用户是在命令行创建,实际业务中,需要在页面中添加用户。

点击添加按钮,通过表单结合ajax提交到后端,实现添加用户功能。

Tip:继承页面css和js处理

base页面

加入css

在这里插入图片描述

加入js

在这里插入图片描述

①用户列表页面 添加用户按钮

user_list.html

在这里插入图片描述

②添加功能实现

路由

在这里插入图片描述

视图

在这里插入图片描述

模板

user_add.html

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

Tip:密码处理

from django.contrib.auth.hashers import make_password

在这里插入图片描述

如果密码不是使用django的加密存储,就会出现不能够登录的问题。因为默认使用的django的用户信息校验方法。

7、更新用户

①修改用户列表模板

添加跳转连接

在这里插入图片描述

②更新功能实现

路由

在这里插入图片描述

视图

在这里插入图片描述

模板

回显用户信息

在这里插入图片描述

更新提交ajax方法

在这里插入图片描述
Tip:点击取消按钮,返回页面的上一页

在这里插入图片描述

8、删除用户

路由

在这里插入图片描述

视图

在这里插入图片描述

模板

行内绑定事件

在这里插入图片描述

删除提交方法

在这里插入图片描述

9、禁用和启用用户

路由

在这里插入图片描述

视图

在这里插入图片描述

模板

在这里插入图片描述

更新状态发送请求方法

在这里插入图片描述

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
 Python自动化运维开发现阶段,掌握一门开发语言已经成为高级运维工程师的必备计能。因为自动化运维才是将来的趋势! 现在,大一点的公司,服务器都上几百,上千,甚至数万台,这种情况下怎样做自动化运维?用 SHELL 写脚本 FOR 循环?呵呵,歇了吧,SHELL 也就适合简单的系统管理工作。到复杂的自动化任务还得要用专门的开发语言。你可能说了,自动化管理有专门的开源软件/监控也有,直接拿来用下就好了,但是现有的开源软件如 puppetsaltstackzabbixnagio 多为通用的软件,不可能完全适用你公司的所有需求,当你需要做定制、做二次开发的时候,你咋办?找开发部门?开发部门不懂运维的实际业务逻辑,写出来的东西烂烂不能用,这活最后还得交给运维开发人员来做。 其次,不会运维开发,你就不能自己写运维平台\复杂的运维工具,一切要借助于找一些开源软件拼拼凑凑,如果是这样,那就请不要抱怨你的工资低,你的工作不受重视了。 那为什么是Python?  Python 是个非常牛 B 的脚本语言, 能满足绝大部分自动化运维的需求,又能做后端 C/S 架构,又能用 WEB 框架快速开发出高大上的 WEB 界面,只有当你自已有能力做出一套运维自动化系统的时候,你的价值才体现出来,你才有资格跟老板谈重视, 否则,还是老老实实回去装机器吧。 为此我们推出这门Python自动化运维系统课程,帮助你快速的掌握这门加薪的技能。这门课程目前已经帮助接近百位的linux工程师转型成功。我们的课程主要是以企业真实的项目实战为主,避免过多的理论,互动多,案例多,注重思想和项目架构的设计,小白很容易听的懂,学完能直接在公司用,非常的接地气! 只要你跟着我们学三个月,你就可以使用学到的技能,开发各种你想要的系统,满足公司的日常开发。讲师介绍凯哥,前新浪、360技术架构师,现任阿里天猫车站架构师。熟悉PHP、Python、Go等各种语言。曾主导新浪CMDB架构的设计以及二次重构,其间积累了大量的实战经验,并多次受邀对小微企业进行内训。  课程目标这门课程属于入门和进阶,适合多年linux运维经验或者有shell或者Python基础的同学学习。 1.希望转型运维开发运维工程师2.希望了解运维开发,探寻运维架构的运维负责人3.希望获得全局思考意识的运维架构负责人 只要你跟着我们认真学,结合课程中的练习和项目进行实践,相信你一定能学以致用,3个月的时间打破瓶颈,成就自己!课程大纲介绍阶段章节核心内容7.实战项目之CMDB介绍和客户端数据的采集介绍自动化运维的介绍运维实际工作简单介绍什么是运维自动化CMDB在自动化运维中的重要性CMDB采集数据的三种方式CMDB实现的三种方案之Agent方式收集资产CMDB实现的三种方案之SSH类方式收集资产CMDB实现的三种方案之Saltstack方式收集资产CMDB实现各种方案的总结8.实战项目之CMDB客户端数据采集实战高内聚低耦合的思想实战CMDB收集资产之参考Django框架对配置文件的解耦CMDB收集资产之对资产采集进行可插拔式的配置CMDB收集资产之客户端功能的解耦数据提交API的验证CMDB收集资产之向API提交收集的资产CMDB收集资产之API的JWT验证问题CMDB收集资产之唯一ID选择问题CMDB收集资产之多线程并发采集9.实战项目之CMDB服务端数据的展示数据表的设计以及数据的入库CMDB后台目录结构的设计CMDB数据库表的设计将客户端提交过来的数据分析并入库用户和权限管理单个用户的增删改查操作用户组的的增删改查操作对用户和用户组进行权限管理硬盘和CPU的管理对资产硬盘的增删改查操作, 以及导出数据到PDF,Excel,CSV对资产CPU的增删改查操作, 以及导出数据到PDF,Excel,CSV            资产信息的可视化展示Highcharts的基本使用蚂蚁金服开源框架AntV的使用xadmin的基本使用和二次开发Echarts的基本使用
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爪蛙毁一生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值