用Django做一个设备管理系统

用Django做一个设备管理系统

用Django做一个设备管理系统的过程可以分为项目初始化、创建Django应用、定义模型、编写视图、配置URL、创建模板、实现用户认证、测试与部署等。 其中,定义模型 是关键步骤,它决定了你的数据结构和业务逻辑。模型是Django ORM(对象关系映射)的基础,通过定义模型类,你可以轻松地与数据库进行交互。每个模型类对应数据库中的一张表,模型的字段对应表中的列。你可以为每个字段设置类型、默认值、约束等,并通过模型的方法定义业务逻辑。通过定义模型,你可以实现设备的增删改查等基本功能,并且能够高效地管理设备数据。

一、项目初始化

在开始之前,确保你已经安装了Python和Django。你可以通过以下命令创建一个新的Django项目:

django-admin startproject device_management

这将创建一个包含基本设置和目录结构的项目。接下来,进入项目目录并启动开发服务器:

cd device_management

python manage.py runserver

访问http://127.0.0.1:8000/,你应该能够看到Django的欢迎页面,这意味着项目初始化成功。

二、创建Django应用

在Django中,一个项目可以包含多个应用。每个应用负责不同的功能模块。创建一个新的应用以管理设备:

python manage.py startapp devices

然后,在项目的settings.py文件中添加这个应用到INSTALLED_APPS列表:

INSTALLED_APPS = [

# 其他已经存在的应用

'devices',

]

这一步确保Django能够找到并使用我们创建的应用。

三、定义模型

devices应用的models.py文件中定义设备的模型:

from django.db import models

class Device(models.Model):

name = models.CharField(max_length=100)

type = models.CharField(max_length=50)

purchase_date = models.DateField()

status = models.CharField(max_length=20, choices=[('available', 'Available'), ('in_use', 'In Use'), ('maintenance', 'Maintenance')])

description = models.TextField(blank=True, null=True)

def __str__(self):

return self.name

定义好模型后,运行迁移命令以将模型应用到数据库:

python manage.py makemigrations

python manage.py migrate

这将创建相应的数据库表。

四、编写视图

devices应用的views.py文件中编写视图函数以处理设备的增删改查:

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})

五、配置URL

devices应用中创建一个名为urls.py的文件,并配置设备相关的URL:

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'),

]

然后,在项目的urls.py文件中包含devices应用的URL:

from django.contrib import admin

from django.urls import path, include

urlpatterns = [

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

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

]

六、创建模板

devices应用中创建一个名为templates的目录,并在其中创建设备相关的HTML模板文件,例如device_list.htmldevice_detail.htmldevice_form.htmldevice_confirm_delete.html。以下是一个简单的device_list.html示例:

{% extends 'base.html' %}

{% block content %}

<h2>设备列表</h2>

<a href="{% url 'device_create' %}">添加设备</a>

<ul>

{% for device in devices %}

<li>

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

({{ device.type }})

<a href="{% url 'device_update' device.pk %}">编辑</a>

<a href="{% url 'device_delete' device.pk %}">删除</a>

</li>

{% endfor %}

</ul>

{% endblock %}

七、实现用户认证

为了确保只有授权用户才能管理设备,可以利用Django自带的用户认证系统。在settings.py文件中配置登录和注销的URL:

LOGIN_REDIRECT_URL = 'device_list'

LOGOUT_REDIRECT_URL = 'login'

然后在项目的urls.py文件中添加认证相关的URL:

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'),

]

在设备相关的视图函数中添加装饰器,以限制访问权限:

from django.contrib.auth.decorators import login_required

@login_required

def device_list(request):

# 视图代码

八、测试与部署

测试是确保系统正常运行的重要步骤。编写单元测试,以覆盖关键功能。在devices应用中创建一个名为tests.py的文件,并编写测试用例:

from django.test import TestCase

from .models import Device

class DeviceModelTest(TestCase):

def test_device_creation(self):

device = Device.objects.create(name="Laptop", type="Electronics", purchase_date="2023-01-01", status="available")

self.assertEqual(device.name, "Laptop")

self.assertEqual(device.type, "Electronics")

self.assertEqual(device.purchase_date, "2023-01-01")

self.assertEqual(device.status, "available")

运行测试:

python manage.py test

确保所有测试通过后,准备部署。选择合适的服务器和数据库,根据需要配置settings.py文件。使用gunicornnginx等工具进行部署,以确保系统的性能和安全性。

通过以上步骤,你将能够成功使用Django构建一个设备管理系统。这个系统不仅可以实现设备的增删改查,还能够通过用户认证来保护数据安全。通过测试和部署,你可以确保系统在生产环境中稳定运行。

相关问答FAQs:

设备管理系统简介

设备管理系统是一种用于跟踪和管理企业内设备的应用程序。通过这种系统,企业可以有效地监控设备的使用状态、维护记录、故障报修以及设备的采购与报废等信息。Django作为一个高效的Web框架,能够帮助开发者快速构建功能完备的设备管理系统。接下来将详细介绍如何用Django构建一个设备管理系统的基本步骤和关键技术。

一、环境准备

在开始之前,需要确保安装了Python和Django。可以使用以下命令来安装Django:

pip install django

创建一个新的Django项目:

django-admin startproject device_management
cd device_management

创建一个新的应用程序:

python manage.py startapp devices

二、模型设计

设备管理系统的核心在于数据模型。可以在devices/models.py中定义设备模型。以下是一个简单的设备模型示例:

from django.db import models

class Device(models.Model):
    DEVICE_TYPE_CHOICES = [
        ('laptop', 'Laptop'),
        ('desktop', 'Desktop'),
        ('printer', 'Printer'),
        ('scanner', 'Scanner'),
    ]

    name = models.CharField(max_length=100)
    device_type = models.CharField(max_length=20, choices=DEVICE_TYPE_CHOICES)
    purchase_date = models.DateField()
    warranty_expiry = models.DateField()
    status = models.BooleanField(default=True)  # True for active, False for inactive

    def __str__(self):
        return self.name

三、数据库迁移

模型定义完成后,需要进行数据库迁移。首先在项目目录中运行以下命令来创建数据库表:

python manage.py makemigrations
python manage.py migrate

四、管理后台

Django提供了强大的管理后台,可以直接在后台管理设备。要使Device模型在管理后台可用,需要在devices/admin.py中注册模型:

from django.contrib import admin
from .models import Device

admin.site.register(Device)

接下来,创建一个超级用户,以便登录管理后台:

python manage.py createsuperuser

运行Django开发服务器:

python manage.py runserver

访问http://127.0.0.1:8000/admin,使用刚创建的超级用户登录,便可以看到设备模型的管理界面。

五、视图与模板

为了实现设备信息的展示与管理,需要创建视图和模板。在devices/views.py中,编写设备列表视图:

from django.shortcuts import render
from .models import Device

def device_list(request):
    devices = Device.objects.all()
    return render(request, 'devices/device_list.html', {'devices': devices})

device_management/urls.py中设置URL路由:

from django.contrib import admin
from django.urls import path
from devices.views import device_list

urlpatterns = [
    path('admin/', admin.site.urls),
    path('devices/', device_list, name='device_list'),
]

接下来,在devices/templates/devices/device_list.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>
    <table>
        <tr>
            <th>设备名称</th>
            <th>设备类型</th>
            <th>购买日期</th>
            <th>保修到期</th>
            <th>状态</th>
        </tr>
        {% for device in devices %}
        <tr>
            <td>{{ device.name }}</td>
            <td>{{ device.get_device_type_display }}</td>
            <td>{{ device.purchase_date }}</td>
            <td>{{ device.warranty_expiry }}</td>
            <td>{{ device.status|yesno:"启用,停用" }}</td>
        </tr>
        {% endfor %}
    </table>
</body>
</html>

六、设备添加与编辑功能

为了实现设备的添加和编辑功能,首先需要在views.py中添加相应的视图:

from django.shortcuts import render, redirect
from .models import Device
from .forms import DeviceForm

def add_device(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/add_device.html', {'form': form})

def edit_device(request, pk):
    device = Device.objects.get(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/edit_device.html', {'form': form})

接下来,在urls.py中添加相应的URL:

from devices.views import add_device, edit_device

urlpatterns = [
    path('admin/', admin.site.urls),
    path('devices/', device_list, name='device_list'),
    path('devices/add/', add_device, name='add_device'),
    path('devices/edit/<int:pk>/', edit_device, name='edit_device'),
]

devices/forms.py中定义表单:

from django import forms
from .models import Device

class DeviceForm(forms.ModelForm):
    class Meta:
        model = Device
        fields = ['name', 'device_type', 'purchase_date', 'warranty_expiry', 'status']

创建相应的模板add_device.htmledit_device.html,用于添加和编辑设备信息。

七、设备搜索与过滤功能

为了使设备管理更加高效,可以实现设备的搜索与过滤功能。在views.py中添加搜索功能:

def device_list(request):
    query = request.GET.get('q')
    if query:
        devices = Device.objects.filter(name__icontains=query)
    else:
        devices = Device.objects.all()
    return render(request, 'devices/device_list.html', {'devices': devices})

device_list.html中添加搜索框:

<form method="get">
    <input type="text" name="q" placeholder="搜索设备...">
    <button type="submit">搜索</button>
</form>

八、故障报修功能

为系统添加故障报修功能是设备管理的重要组成部分。在模型中增加一个报修记录模型,记录设备的故障信息:

class RepairRequest(models.Model):
    device = models.ForeignKey(Device, on_delete=models.CASCADE)
    description = models.TextField()
    request_date = models.DateField(auto_now_add=True)
    status = models.BooleanField(default=False)  # False for pending, True for resolved

创建报修请求视图和模板,允许用户提交故障报修请求,并能查看报修记录。

九、系统部署

当设备管理系统开发完成后,可以选择将其部署到云服务器上。可以使用Docker、Heroku等工具进行部署,将代码和数据库迁移到生产环境。

十、总结与展望

通过以上步骤,使用Django构建一个基本的设备管理系统已经完成。这个系统可以根据企业的需求进行扩展,添加更多的功能,如设备的采购管理、使用统计报表等。

对于希望快速构建管理软件的企业,推荐使用零代码开发平台。这样的工具能够在短时间内提供丰富的管理系统模板,方便企业进行定制。只需5分钟即可搭建一个管理软件,具体可以访问以下链接:

地址: https://s.fanruan.com/x6aj1;

此外,还可以使用100+企业管理系统模板,免费在线安装,无需下载:

地址: https://s.fanruan.com/7wtn5;

这样的工具将极大地提高企业的管理效率。

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

发表回复

登录后才能评论

丰富模板,开箱即用

更多模板

应用搭建,如此

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

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

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