Django获取服务器信息系统设计----(1)项目基本框架


项目简介:

sysinfo 使用 Django 框架和 psutil 开发的一个中文版 Linux 服务器信息查看应用,可查看的信息包括系统、CPU、内存、硬盘、进程、网络、登录用户等,同时可查看并导出部分数据的图表。

项目地址:

https://gitee.com/sdsnzy/sys-info


1. 创建项目


1)创建项目:sysInfo

在这里插入图片描述

2)创建app:host

python manage.py startapp host

3)添加app到主配置文件并修改相应设置:

INSTALLED_APPS = [
    'host',
]
LANGUAGE_CODE = 'zh-hans' # 修改语言
TIME_ZONE = 'Asia/Shanghai' # 修改时区

4)生成数据库表:

python manage.py makemigrations # 生成数据库迁移脚本(每次修改了数据库必备操作)
python manage.py migrate # 将迁移脚本写入数据库并创建数据库表

5)创建超级用户:

python manage.py createsuperuser

6)运行测试:这里设置端口为9999

python manage.py runserver 9999
访问:localhost:9999/admin

2. git 初始化


1)初始化git仓库管理:

git init

2)安装插件 .ignore,并生成python上传git项目需要忽略内容的文件 .gitignore

安装插件并忽略指定内容教程:https://blog.csdn.net/weixin_46069582/article/details/114595118

结果如下:
在这里插入图片描述

3)保存项目过程

git add * # 将本地增删改查的文件全部添加到暂存区
git commit -m "git 初始化" # 添加到本地仓库
git log # 查看提交日志

在这里插入图片描述

准备 README.md :

1.导入此项目需要的包(最后完成时导入)
pip freeze > requirements.txt
2.创建 README.md

上传到gitee仓库:

1.在gitee中新建仓库sysInfo
2.关联仓库
git remote add origin https://gitee.com/sdsnzy/sys-info.git
3.首次上传
git push --set-upstream origin master -f
4.上传
git push

3. 项目基本架构


路由 视图函数 前端模板
views.index index.html
user/ views.user user.html
cpu/ views.cpu cpu.html
memory/ views.memory memory.html
disk/ views.disk disk.html
network/ views.network network.html
process/ views.process process.html

在cpu的信息展示时,包含三个界面

  • cpu文字信息:cpu.html
  • cpu折线图:cpu-line.html
  • cpu扇形图:cpu-pie.html

4. 搭建项目框架


4.1 路由配置


1)主路由:sysInfo/urls.py

from django.contrib import admin
from django.urls import path, include

urlpatterns = [
    path('admin/', admin.site.urls),
    path('',include('host.urls')),
]

2)子路由:host/urls.py

from django.urls import path
from host.views import *
urlpatterns = [
    path('', index, name='index'),
    path('user/', user, name='user'),
    path('cpu/', cpu, name='cpu'),
    path('cpu/<str:chart>/', cpu, name='cpu'), # cpu信息的图形界面
    path('memory/', memory, name='memory'),
    path('disk/', disk, name='disk'),
    path('network/', network, name='network'),
    path('process/', process, name='process')
]

4.2 视图函数框架


host/views.py

from django.shortcuts import render
def index(request):
    return render(request, 'host/index.html', locals())
    
def user(request):
    return render(request, 'host/user.html', locals())
    
def cpu(request):
    return render(request, 'host/cpu.html', locals())
    
def memory(request):
    return render(request, 'host/memory.html', locals())
    
def disk(request):
    return render(request, 'host/disk.html', locals())
    
def network(request):
    return  render(request, 'host/network.html', locals())
    
def process(request):
    return render(request, 'host/process.html', locals())

4.3 前端框架


1)在 static 目录中,写入了静态文件:css框架、jQuery

2)添加静态文件到主配置:sysInfo/settings.py

STATICFILES_DIRS=[
    BASE_DIR / "static",
]

3)创建前端界面文件框架(在 templates/host 目录下)


html文件 描述
base.html 由于多界面的导航栏等大体较为相似,所以创建一个基本模板,不用重复造轮子
index.html 显示首页信息
user.html 显示用户信息
cpu.html 显示cpu信息
memory.html 显示内存信息
disk.html 显示磁盘信息
network.html 显示网络信息
process.html 显示进程

4.4 base框架模板


templates/host/base.html

<!DOCTYPE html>
<html {% block html_attribs %}{% endblock html_attribs %}>
<head>
    {% block head %}
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <title>{% block title %} {% endblock title %}</title>
        <link rel="stylesheet" type="text/css" href="/static/css/bootstrap.css">
        <link rel="stylesheet" type="text/css" href="/static/css/my-style.css">
        <script src="/static/js/jquery-3.1.1.min.js"></script>
        <!-- 在线cdn获取echarts工具-->
        <script src="https://lib.baomitu.com/echarts/5.0.2/echarts.min.js"></script>
    {% endblock head %}
</head>
<body>
<div class="sysinfo">
    <div class="navbar navbar-inverse" role="navigation">
        <div class="container">
            <div class="navbar-header">
                <a class="navbar-brand" href="/">Sys Info</a>
            </div>
            <div class="navbar-collapse collapse">
                <ul class="nav navbar-nav">
                    <li><a href="/">系统</a></li>
                    <li><a href="/cpu/">CPU</a></li>
                    <li><a href="/memory/">内存</a></li>
                    <li><a href="/disk/">硬盘</a></li>
                    <li><a href="/network/">网络</a></li>
                    <li><a href="/process/">进程</a></li>
                    <li><a href="/user/">用户</a></li>
                </ul>
            </div>
        </div>
    </div>
    <div class="container">
        {% block content %}{% endblock %}
    </div>
</div>
</body>
</html>

4.5 自定义过滤器框架


自定义过滤器Django官方:https://docs.djangoproject.com/zh-hans/3.1/howto/custom-template-tags/

新建文件:host/templatetags/filter.py,将过滤器存放在此文件下

from django import template
from datetime import datetime

register = template.Library()

猜你喜欢

转载自blog.csdn.net/weixin_46069582/article/details/114729758