数据分析网站怎么做,在统计局网站上如何做图表,梵客家装电话,自己制作app的应用程序文章目录新建Django项目创建子应用并设置本地化创建数据库表创建超级用户git管理项目#xff08;requirements.txt、README.md、.ignore#xff09;主机信息监控应用的框架搭建具体功能实现系统信息展示前端界面设计视图函数设计用户信息展示视图函数设计自定义过滤器的实现前…
文章目录新建Django项目创建子应用并设置本地化创建数据库表创建超级用户git管理项目requirements.txt、README.md、.ignore主机信息监控应用的框架搭建具体功能实现系统信息展示前端界面设计视图函数设计用户信息展示视图函数设计自定义过滤器的实现前端界面设计目标使用 Python Django框架和psutil开发一个中文版 Linux 服务器信息查看应用可查看的信息包括系统、CPU、内存、硬盘、进程、网络、登录用户等同时可查看并导出部分数据的图表。
psutil模块参考文章参考文章https://www.cnblogs.com/saneri/p/7528283.html
新建Django项目
使用虚拟的解释器环境 下图中应该将 Inherit global site-packages 勾选上
创建子应用并设置本地化 创建数据库表
Django项目自带后台管理 虽然新建的Django项目还没有加入新数据但是Django项目自带的用户名之类的数据信息都需要存储到数据库中。
首先生成数据库迁移脚本 然后将迁移脚本写入数据库
创建超级用户 在Terminal运行项目python manage.py runserver 浏览器访问 至此项目最基本的搭建完成。
git管理项目requirements.txt、README.md、.ignore
右击项目名新建.ignore文件 提示warning信息 warning: in the working copy of ‘.idea/inspectionProfiles/profiles_settings.xml’, LF will be replaced by CRLF the next time Git touches it 根据文章https://www.cnblogs.com/poppyCHN/p/16865100.html和https://www.cnblogs.com/outs/p/6909567.html。 做出以下修改
将代码添加到本地仓库完成。 然后使用
pip freeze # 列出当前环境已经安装的第三方模块
pip freeze requirements.txt # 输出重定向到requirements.txt 文件右击新建File新建README.md文件。
主机信息监控应用的框架搭建
路由视图函数前端模板/views.indexindex.html/user/views.useruser.html/cpu/views.cpucpu.html/memory/views.memorymemory.html/disk/views.diskdisk.html/network/views.networknetwork.html/process/views.processprocess.html
在sysinfo项目的主路由文件设置使得访问转入到子应用的路由文件 在子应用的路由配置文件中写明不同的访问路径执行相应的视图函数
在子应用host中编写视图函数 sysinfo/host/views.py :
from django.shortcuts import render
# Create your views here.
def index(request):passreturn render(request,host/index.html,locals())
def user(request):passreturn render(request,host/user.html,locals())
def cpu(request):passreturn render(request,host/cpu.html,locals())
def memory(request):passreturn render(request,host/memory.html,locals())
def disk(request):passreturn render(request,host/disk.html,locals())
def network(request):passreturn render(request,host/network.html,locals())
def process(request):passreturn render(request,host/process.html,locals())在template下新建host目录并创建对应的HTML文件 至此项目的框架搭建完成。
具体功能实现
系统信息展示
前端界面设计
新建 templates/host/base.html 文件
!DOCTYPE html
html {% block html_attribs %}{% endblock html_attribs %}
head{% block head %}meta http-equivContent-Type contenttext/html; charsetutf-8meta nameviewport contentwidthdevice-width, initial-scale1title{% block title %} {% endblock title %}/titlelink relstylesheet typetext/css href/static/css/bootstrap.csslink relstylesheet typetext/css href/static/css/my-style.cssscript src/static/js/jquery-3.1.1.min.js/script{% endblock head %}
/head
body
div classsysinfodiv classnavbar navbar-inverse rolenavigationdiv classcontainerdiv classnavbar-headera classnavbar-brand href/Sys Info/a/divdiv classnavbar-collapse collapseul classnav navbar-navlia href/系统/a/lilia href/cpu/CPU/a/lilia href/memory/内存/a/lilia href/disk/硬盘/a/lilia href/network/网络/a/lilia href/process/进程/a/lilia href/user/用户/a/li/ul/div/div/divdiv classcontainer{% block content %}{% endblock %}/div
/div
/body
/html在templates/host/index.html 文件中包含 base.html 文件
{% extends host/base.html %}
{% block title %}Sys Info{% endblock %}
{% block content %}div classpage-headerh1系统信息/h1/divdivtable classtable table-borderedtrtd主机名/tdtd{{ sys_name }}/td/trtrtd内核名称/tdtd{{ kernel_name }}/td/trtrtd发行版本号/tdtd{{ kernel_no }}/td/trtrtd内核版本/tdtd{{ kernel_version }}/td/trtrtd系统架构/tdtd{{ sys_framework }}/td/trtrtd现在时间/tdtd{{ now_time }}/td/trtrtd开机时间/tdtd{{ boot_time }}/td/trtrtd运行时间/tdtd{{ up_time }}/td/tr/table/div
{% endblock %}编辑 settings.py 文件
测试发现能展示出首页效果。但是还没有数据显示。这是因为还没写视图函数业务逻辑还没实现。
视图函数设计
如果是在Linux系统下通过python执行Linux命令就能获取到主机信息。
查看主机名、操作系统、内核版本、系统架构hostnamectl
查看系统名称: uname
查看系统开机时间、已经运行了多长时间: top、w、uptime、 cat /proc/uptime
查看内核版本、系统架构: uname -r
获取系统架构: hostnamectl | grep Architecture | awk -F : {print $2}python中执行Linux命令的方式一 命令直接输出结果。但是很多情况下希望把结果存起来。
在Linux系统下
执行 ipython 命令安装pip install ipython
import os
cmdhostnamectl | grep Architecture | awk -F : {print $2}
os.system(cmd) #执行命令直接输出命令结果python中执行Linux命令的方式二
Linux下
输入 python3 命令
import os
os.popen(hostname) #返回的是一个文件对象
f os.popen(hostname)
f.read() #输出结果值
os.popen(hostname).read()如果是在Windows下无法执行Linux命令该如何获取Linux服务器的这些信息 通过 psutil 模块 参考文章https://www.cnblogs.com/saneri/p/7528283.html
安装 psutil
视图函数编辑 host/views.py
from datetime import datetime
from django.shortcuts import render
import psutil
import os,platform# Create your views here.
def index(request):try:infoos.uname()# linux系统下except:infoplatform.uname() # Windows系统下sys_nameinfo.nodekernel_nameinfo.systemkernel_noinfo.releasekernel_versioninfo.versionsys_frameworkinfo.machineboot_time datetime.fromtimestamp(psutil.boot_time())now_time datetime.now()up_time now_time - boot_timereturn render(request, host/index.html, locals())测试
用户信息展示
渲染就是将视图函数的变量信息填充到模板HTML页面中最终返回给用户的过程。
视图函数设计
在 host/views.py 文件修改user 函数
def user(request):userspsutil.users() #很多用户return render(request, host/user.html, locals())自定义过滤器的实现
为了将用户登录时间显示的更友好需要自定义过滤器。 自定义过滤器参考文档https://docs.djangoproject.com/zh-hans/4.1/howto/custom-template-tags/ 新建包 templatetags包的名字是固定的 新建python文件 timefilter.py 实现过滤器 自定义的过滤器文件 timefilter.py
from datetime import datetime
from django import template
register template.Library() # 1、实例化库register.filter(nametimefmt) # 3、注册过滤器
def timefmt(value): # 2、具体实现过滤器将时间戳转换为datetime类型的时间return datetime.fromtimestamp(value)前端界面设计
编辑 templates/host/user.html 文件 其中extends 表示继承基模板 {% load timefilter %} 表示加载自定义过滤器文件 {{ user.started | timefmt }} 表示使用过滤器。这个过滤器可以是内置过滤器也可以自定义过滤器
{% extends host/base.html %}
{% load timefilter %}
{% block title %} 用户信息 {% endblock %}
{% block content %}div classpage-headerh1 登录用户 /h1/divdivtable classtable table-borderedtrtd用户名/tdtd登录主机/tdtd终端/tdtd登录时间/td/tr{% for user in users %}trtd{{ user.name }}/tdtd{{ user.host }}/tdtd{{ user.terminal }}/tdtd{{ user.started | timefmt }}/td/tr{% endfor %}/table/div
{% endblock %}项目里添加文件之后需要重启项目才能生效
测试