python写一个设备管理系统

python写一个设备管理系统

在Python中编写一个设备管理系统可以通过使用Django框架实现。Django提供了强大的ORM、灵活的URL路由、内置的用户认证系统,适用于开发复杂的Web应用。通过创建一个Django项目和一个设备管理应用,我们可以定义设备模型、实现CRUD操作、提供用户认证和权限控制功能。

一、Django框架概述、环境设置

Django框架概述:Django是一个高层次的Python Web框架,鼓励快速开发和干净、实用的设计。Django的主要特点包括:ORM(对象关系映射)、内置的管理界面、灵活的URL路由、强大的用户认证系统和权限控制、良好的文档支持。

环境设置:首先需要安装Python和Django,可以通过pip安装:

pip install django

然后,使用Django命令行工具创建一个新的项目和应用:

django-admin startproject device_management

cd device_management

django-admin startapp devices

这将创建项目和应用的目录结构。接下来,需要在项目的settings.py中注册应用:

INSTALLED_APPS = [

...

'devices',

]

二、定义设备模型、迁移数据库

定义设备模型:devices/models.py中定义设备模型,包括设备名称、型号、序列号、购买日期等字段。

from django.db import models

class Device(models.Model):

name = models.CharField(max_length=100)

model = models.CharField(max_length=100)

serial_number = models.CharField(max_length=100, unique=True)

purchase_date = models.DateField()

def __str__(self):

return self.name

迁移数据库:执行以下命令创建数据库迁移文件并应用迁移:

python manage.py makemigrations

python manage.py migrate

三、创建视图、模板、URL配置

创建视图:devices/views.py中定义视图函数或类视图,用于处理设备的CRUD操作。

from django.shortcuts import render, get_object_or_404, redirect

from .models import Device

from .forms import DeviceForm

def device_list(request):

devices = Device.objects.all()

return render(request, 'devices/device_list.html', {'devices': devices})

def device_detail(request, pk):

device = get_object_or_404(Device, pk=pk)

return render(request, 'devices/device_detail.html', {'device': device})

def device_create(request):

if request.method == 'POST':

form = DeviceForm(request.POST)

if form.is_valid():

form.save()

return redirect('device_list')

else:

form = DeviceForm()

return render(request, 'devices/device_form.html', {'form': form})

def device_update(request, pk):

device = get_object_or_404(Device, pk=pk)

if request.method == 'POST':

form = DeviceForm(request.POST, instance=device)

if form.is_valid():

form.save()

return redirect('device_list')

else:

form = DeviceForm(instance=device)

return render(request, 'devices/device_form.html', {'form': form})

def device_delete(request, pk):

device = get_object_or_404(Device, pk=pk)

if request.method == 'POST':

device.delete()

return redirect('device_list')

return render(request, 'devices/device_confirm_delete.html', {'device': device})

创建模板:devices/templates/devices目录下创建HTML模板文件,如device_list.htmldevice_detail.htmldevice_form.htmldevice_confirm_delete.html

<!-- device_list.html -->

{% extends "base_generic.html" %}

{% block content %}

<h1>Device List</h1>

<ul>

{% for device in devices %}

<li><a href="{% url 'device_detail' device.pk %}">{{ device.name }}</a></li>

{% endfor %}

</ul>

<a href="{% url 'device_create' %}">Add New Device</a>

{% endblock %}

URL配置:devices/urls.py中配置URL模式,并在device_management/urls.py中包含设备应用的URL。

# devices/urls.py

from django.urls import path

from . import views

urlpatterns = [

path('', views.device_list, name='device_list'),

path('device/<int:pk>/', views.device_detail, name='device_detail'),

path('device/new/', views.device_create, name='device_create'),

path('device/<int:pk>/edit/', views.device_update, name='device_update'),

path('device/<int:pk>/delete/', views.device_delete, name='device_delete'),

]

device_management/urls.py

from django.contrib import admin

from django.urls import include, path

urlpatterns = [

path('admin/', admin.site.urls),

path('devices/', include('devices.urls')),

]

四、表单处理、用户认证

表单处理:devices/forms.py中定义设备表单,使用Django的表单类。

from django import forms

from .models import Device

class DeviceForm(forms.ModelForm):

class Meta:

model = Device

fields = ['name', 'model', 'serial_number', 'purchase_date']

用户认证:使用Django内置的用户认证系统来管理用户的登录、注册、权限控制。在device_management/settings.py中配置认证设置,如登录URL、登出URL等。

LOGIN_REDIRECT_URL = '/'

LOGOUT_REDIRECT_URL = '/'

创建用户注册、登录、登出视图和模板,并在URL配置中添加相应的路径。

# device_management/urls.py

from django.contrib.auth import views as auth_views

urlpatterns = [

...

path('accounts/login/', auth_views.LoginView.as_view(), name='login'),

path('accounts/logout/', auth_views.LogoutView.as_view(), name='logout'),

path('accounts/signup/', views.signup, name='signup'),

]

定义用户注册视图和表单。

# devices/views.py

from django.contrib.auth import login, authenticate

from django.contrib.auth.forms import UserCreationForm

from django.shortcuts import render, redirect

def signup(request):

if request.method == 'POST':

form = UserCreationForm(request.POST)

if form.is_valid():

user = form.save()

login(request, user)

return redirect('device_list')

else:

form = UserCreationForm()

return render(request, 'signup.html', {'form': form})

五、权限控制、测试和部署

权限控制:使用Django的权限系统来控制用户对设备管理功能的访问。在视图函数或类视图中使用装饰器限制访问权限。

from django.contrib.auth.decorators import login_required

from django.utils.decorators import method_decorator

@method_decorator(login_required, name='dispatch')

class DeviceListView(ListView):

model = Device

template_name = 'devices/device_list.html'

测试:编写单元测试和功能测试,确保设备管理系统的各项功能正常。在devices/tests.py中定义测试用例,使用Django的测试工具进行测试。

from django.test import TestCase

from .models import Device

class DeviceModelTest(TestCase):

def test_string_representation(self):

device = Device(name="Test Device")

self.assertEqual(str(device), device.name)

部署:选择适合的服务器和数据库,配置项目的生产环境设置,如静态文件、数据库连接等。可以使用Docker容器化部署,或者使用Heroku等平台进行快速部署。

通过上述步骤,一个功能完善的设备管理系统便可实现,包括设备的CRUD操作、用户认证和权限控制、测试和部署等方面。Django框架提供的丰富特性和强大工具,使得开发和维护这样的系统变得高效且便捷

相关问答FAQs:

创建一个设备管理系统是一个非常实用的项目,可以帮助企业有效管理其设备资产。这个系统通常包括设备的添加、删除、修改、查询等功能。以下是一个简单的设备管理系统的Python实现示例,使用Flask框架进行Web开发,并使用SQLite作为数据库。

环境准备

首先,确保你已经安装了以下库:

pip install Flask Flask-SQLAlchemy

项目结构

项目结构可以如下所示:

device_management/
│
├── app.py
├── models.py
├── templates/
│   ├── index.html
│   ├── add_device.html
│   └── edit_device.html
└── static/
    └── styles.css

1. 创建数据库模型

models.py文件中定义设备模型。

from flask_sqlalchemy import SQLAlchemy

db = SQLAlchemy()

class Device(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(100), nullable=False)
    description = db.Column(db.String(200), nullable=True)
    status = db.Column(db.String(50), nullable=False)

    def __repr__(self):
        return f'<Device {self.name}>'

2. 创建Flask应用

app.py文件中创建Flask应用并设置数据库。

from flask import Flask, render_template, request, redirect, url_for
from models import db, Device

app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///devices.db'
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
db.init_app(app)

with app.app_context():
    db.create_all()

@app.route('/')
def index():
    devices = Device.query.all()
    return render_template('index.html', devices=devices)

@app.route('/add', methods=['GET', 'POST'])
def add_device():
    if request.method == 'POST':
        name = request.form['name']
        description = request.form['description']
        status = request.form['status']
        new_device = Device(name=name, description=description, status=status)
        db.session.add(new_device)
        db.session.commit()
        return redirect(url_for('index'))
    return render_template('add_device.html')

@app.route('/edit/<int:device_id>', methods=['GET', 'POST'])
def edit_device(device_id):
    device = Device.query.get_or_404(device_id)
    if request.method == 'POST':
        device.name = request.form['name']
        device.description = request.form['description']
        device.status = request.form['status']
        db.session.commit()
        return redirect(url_for('index'))
    return render_template('edit_device.html', device=device)

@app.route('/delete/<int:device_id>')
def delete_device(device_id):
    device = Device.query.get_or_404(device_id)
    db.session.delete(device)
    db.session.commit()
    return redirect(url_for('index'))

if __name__ == '__main__':
    app.run(debug=True)

3. 创建HTML模板

templates文件夹中创建index.htmladd_device.htmledit_device.html

index.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link rel="stylesheet" href="{{ url_for('static', filename='styles.css') }}">
    <title>设备管理系统</title>
</head>
<body>
    <h1>设备管理系统</h1>
    <a href="{{ url_for('add_device') }}">添加设备</a>
    <table>
        <tr>
            <th>设备名称</th>
            <th>描述</th>
            <th>状态</th>
            <th>操作</th>
        </tr>
        {% for device in devices %}
        <tr>
            <td>{{ device.name }}</td>
            <td>{{ device.description }}</td>
            <td>{{ device.status }}</td>
            <td>
                <a href="{{ url_for('edit_device', device_id=device.id) }}">编辑</a>
                <a href="{{ url_for('delete_device', device_id=device.id) }}">删除</a>
            </td>
        </tr>
        {% endfor %}
    </table>
</body>
</html>

add_device.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>添加设备</title>
</head>
<body>
    <h1>添加设备</h1>
    <form method="POST">
        <label for="name">设备名称:</label>
        <input type="text" name="name" required>
        <label for="description">描述:</label>
        <input type="text" name="description">
        <label for="status">状态:</label>
        <input type="text" name="status" required>
        <button type="submit">添加设备</button>
    </form>
    <a href="{{ url_for('index') }}">返回</a>
</body>
</html>

edit_device.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>编辑设备</title>
</head>
<body>
    <h1>编辑设备</h1>
    <form method="POST">
        <label for="name">设备名称:</label>
        <input type="text" name="name" value="{{ device.name }}" required>
        <label for="description">描述:</label>
        <input type="text" name="description" value="{{ device.description }}">
        <label for="status">状态:</label>
        <input type="text" name="status" value="{{ device.status }}" required>
        <button type="submit">保存更改</button>
    </form>
    <a href="{{ url_for('index') }}">返回</a>
</body>
</html>

4. 样式表

static文件夹中创建styles.css文件并添加一些基本样式。

body {
    font-family: Arial, sans-serif;
    margin: 20px;
}

h1 {
    color: #333;
}

table {
    width: 100%;
    border-collapse: collapse;
}

table, th, td {
    border: 1px solid black;
}

th, td {
    padding: 10px;
    text-align: left;
}

5. 启动应用

在终端中运行以下命令启动应用:

python app.py

访问http://127.0.0.1:5000/来使用设备管理系统。

总结

这个设备管理系统是一个基本的示例,展示了如何使用Flask和SQLite快速构建一个Web应用。你可以根据需要扩展该系统,增加更多功能,比如用户权限管理、设备分类、设备借用管理等。

如果你想更高效地开发应用程序,推荐一个好用的零代码开发平台,可以在短时间内搭建管理软件。5分钟即可搭建一个管理软件,地址是: https://s.fanruan.com/x6aj1;

另外,提供100+企业管理系统模板免费使用,无需下载,在线安装,地址是: https://s.fanruan.com/7wtn5;

免责申明:本文内容通过AI工具匹配关键字智能整合而成,仅供参考,帆软及简道云不对内容的真实、准确或完整作任何形式的承诺。如有任何问题或意见,您可以通过联系marketing@jiandaoyun.com进行反馈,简道云收到您的反馈后将及时处理并反馈。
(0)
简道云——国内领先的企业级零代码应用搭建平台
huang, Fayehuang, Faye

发表回复

登录后才能评论

丰富模板,开箱即用

更多模板

应用搭建,如此

国内领先的企业级零代码应用搭建平台

已为你匹配合适的管理模板
请选择您的管理需求

19年 数字化服务经验

2200w 平台注册用户

205w 企业组织使用

NO.1 IDC认证零代码软件市场占有率

丰富模板,安装即用

200+应用模板,既提供标准化管理方案,也支持零代码个性化修改

  • rich-template
    CRM客户管理
    • 客户数据360°管理
    • 销售全过程精细化管控
    • 销售各环节数据快速分析
    • 销售业务规则灵活设置
  • rich-template
    进销存管理
    • 销售订单全流程管理
    • 实时动态库存管理
    • 采购精细化线上管理
    • 业财一体,收支对账清晰
  • rich-template
    ERP管理
    • 提高“采销存产财”业务效率
    • 生产计划、进度全程管控
    • 业务数据灵活分析、展示
    • 个性化需求自定义修改
  • rich-template
    项目管理
    • 集中管理项目信息
    • 灵活创建项目计划
    • 多层级任务管理,高效协同
    • 可视化项目进度追踪与分析
  • rich-template
    HRM人事管理
    • 一体化HR管理,数据全打通
    • 员工档案规范化、无纸化
    • “入转调离”线上审批、管理
    • 考勤、薪酬、绩效数据清晰
  • rich-template
    行政OA管理
    • 常见行政管理模块全覆盖
    • 多功能模块灵活组合
    • 自定义审批流程
    • 无纸化线上办公
  • rich-template
    200+管理模板
立刻体验模板

低成本、快速地搭建企业级管理应用

通过功能组合,灵活实现数据在不同场景下的:采集-流转-处理-分析应用

    • 表单个性化

      通过对字段拖拉拽或导入Excel表,快速生成一张表单,灵活进行数据采集、填报与存档

      查看详情
      产品功能,表单设计,增删改,信息收集与管理

      通过对字段拖拉拽或导入Excel表,快速生成一张表单,灵活进行数据采集、填报与存档

      免费试用
    • 流程自动化

      对录入的数据设置流程规则实现数据的流转、审批、分配、提醒……

      查看详情
      产品功能,流程设计,任务流转,审批流

      对录入的数据设置流程规则实现数据的流转、审批、分配、提醒……

      免费试用
    • 数据可视化

      选择你想可视化的数据表,并匹配对应的图表类型即可快速生成一张报表/可视化看板

      产品功能,数据报表可视化,权限管理

      选择你想可视化的数据表,并匹配对应的图表类型即可快速生成一张报表/可视化看板

      免费试用
    • 数据全打通

      在不同数据表之间进行 数据关联与数据加减乘除计算,实时、灵活地分析处理数据

      查看详情
      产品功能,数据处理,分组汇总

      在不同数据表之间进行 数据关联与数据加减乘除计算,实时、灵活地分析处理数据

      免费试用
    • 智能数据流

      根据数据变化状态、时间等规则,设置事项自动触发流程,告别重复手动操作

      查看详情
      产品功能,智能工作,自动流程

      根据数据变化状态、时间等规则,设置事项自动触发流程,告别重复手动操作

      免费试用
    • 跨组织协作

      邀请企业外的人员和组织加入企业内部业务协作流程,灵活设置权限,过程、数据可查可控

      查看详情
      产品功能,上下游协作,跨组织沟通

      邀请企业外的人员和组织加入企业内部业务协作流程,灵活设置权限,过程、数据可查可控

      免费试用
    • 多平台使用

      手机电脑不受限,随时随地使用;不论微信、企业微信、钉钉还是飞书,均可深度集成;

      查看详情
      多端使用,电脑手机,OA平台

      手机电脑不受限,随时随地使用;不论微信、企业微信、钉钉还是飞书,均可深度集成;

      免费试用

    领先企业,真实声音

    完美适配,各行各业

    客户案例

    海量资料,免费下载

    国内领先的零代码数字化智库,免费提供海量白皮书、图谱、报告等下载

    更多资料

    大中小企业,
    都有适合的数字化方案

    • gartner认证,LCAP,中国代表厂商

      中国低代码和零代码软件市场追踪报告
      2023H1零代码软件市场第一

    • gartner认证,CADP,中国代表厂商

      公民开发平台(CADP)
      中国代表厂商

    • gartner认证,CADP,中国代表厂商

      低代码应用开发平台(CADP)
      中国代表厂商

    • forrester认证,中国低代码,入选厂商

      中国低代码开发领域
      入选厂商

    • 互联网周刊,排名第一

      中国低代码厂商
      排行榜第一

    • gartner认证,CADP,中国代表厂商

      国家信息系统安全
      三级等保认证

    • gartner认证,CADP,中国代表厂商

      信息安全管理体系
      ISO27001认证