网站首页/ 信息中心/ 档案百科/

零基础搭建消防许可证档案管理系统实战指南

发布时间:2026年09月18日 05:50:24 浏览量:0

一、开发环境准备与依赖安装

在开始构建之前,我们需要准备好Python运行环境。本系统基于Python 3.9和Django 4.2框架开发,利用其自带的Admin后台可以快速构建功能完善的档案管理系统,无需编写复杂的前端页面。

打开终端(Windows下为CMD或PowerShell),执行以下命令创建项目目录并进入:

```bash mkdir fire_license_system cd fire_license_system ```

接着,创建虚拟环境并激活,以隔离项目依赖:

```bash python -m venv venv venv\Scripts\activate ```

安装Django框架以及用于处理图片文件的Pillow库:

```bash pip install django==4.2.7 pillow==10.1.0 ```

二、项目框架与应用初始化

环境配置完成后,使用Django的命令行工具创建项目骨架。我们将项目命名为config,核心应用命名为archive

```bash django-admin startproject config . python manage.py startapp archive ```

执行完上述命令后,目录结构中会出现configarchive两个文件夹。接下来,需要将新建的archive应用注册到项目中。打开config/settings.py文件,找到INSTALLED_APPS列表,在末尾添加'archive'

```python INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'archive', 新增这一行 ] ```

三、核心数据模型设计

这是系统的核心部分,用于定义消防许可证档案的数据库结构。打开archive/models.py文件,删除原有内容,并输入以下代码。该模型包含了许可证编号、单位名称、有效期、上传扫描件等关键字段:

```python from django.db import models from django.utils import timezone class FireLicenseArchive(models.Model): 许可证唯一编号 license_number = models.CharField("许可证编号", max_length=100, unique=True) 获取许可证的单位名称 company_name = models.CharField("单位名称", max_length=200) 许可证类型(如:营业前消防安全检查、消防验收等) license_type = models.CharField("许可证类型", max_length=50, default="营业前检查") 发证日期 issue_date = models.DateField("发证日期") 有效期至 expiry_date = models.DateField("有效期至") 档案存放位置(物理档案柜编号) physical_location = models.CharField("物理存放位置", max_length=50, blank=True) 负责人姓名 responsible_person = models.CharField("责任人", max_length=50) 联系电话 contact_phone = models.CharField("联系电话", max_length=20) 许可证扫描件上传 (接上文) document_scan = models.FileField("扫描件上传", upload_to='scans/%Y/%m/', blank=True, null=True) 备注信息 remarks = models.TextField("备注", blank=True) 创建时间 created_at = models.DateTimeField("录入时间", auto_now_add=True) 更新时间 updated_at = models.DateTimeField("最后更新", auto_now=True) class Meta: verbose_name = "消防许可证档案" verbose_name_plural = "消防许可证档案" ordering = ['-issue_date'] def __str__(self): return f"{self.company_name} - {self.license_number}" @property def is_expired(self): """判断许可证是否过期""" return self.expiry_date < timezone.now().date() ```

四、后台管理功能深度定制

为了方便录入和查询,我们需要对Django Admin后台进行定制。打开archive/admin.py文件,配置列表展示字段、搜索功能和过滤器:

```python from django.contrib import admin from .models import FireLicenseArchive @admin.register(FireLicenseArchive) class FireLicenseArchiveAdmin(admin.ModelAdmin): 列表页展示的字段 list_display = ('license_number', 'company_name', 'license_type', 'issue_date', 'expiry_date', 'is_expired_status') 每页显示数量 list_per_page = 20 支持搜索的字段 search_fields = ('license_number', 'company_name', 'responsible_person') 右侧筛选栏 list_filter = ('license_type', 'issue_date', 'expiry_date') 点击字段进入编辑页面 list_display_links = ('license_number', 'company_name') 日期层级筛选 date_hierarchy = 'issue_date' def is_expired_status(self, obj): """在列表中显示过期状态""" if obj.is_expired: return '已过期' return '有效' is_expired_status.short_description = '状态' 简单的CSS样式,给已过期的标红 def is_expired_status(self, obj): status = '已过期' if obj.is_expired else '有效' color = 'red' if obj.is_expired else 'green' return f'{status}' is_expired_status.allow_tags = True is_expired_status.short_description = '状态' ```

五、文件上传与静态资源配置

为了确保证书扫描件能够正常上传和预览,需要配置媒体文件路径。继续编辑config/settings.py,在文件最底部添加以下配置:

```python import os 媒体文件(用户上传的文件)配置 MEDIA_URL = '/media/' MEDIA_ROOT = os.path.join(BASE_DIR, 'media') 静态文件配置 STATIC_URL = '/static/' ```

配置完成后,需要修改URL路由,以便开发服务器能处理用户上传的文件。打开config/urls.py,修改为如下内容:

```python from django.contrib import admin from django.urls import path from django.conf import settings from django.conf.urls.static import static urlpatterns = [ path('admin/', admin.site.urls), ] 仅在开发环境下提供媒体文件服务 if settings.DEBUG: urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) ```

六、数据库初始化与管理员创建

代码编写完成后,需要将模型变更同步到数据库,并创建一个管理员账号用于登录系统。

零基础搭建消防许可证档案管理系统实战指南

执行数据库迁移命令:

```bash python manage.py makemigrations python manage.py migrate ```

创建超级用户(执行后按提示输入用户名、邮箱和密码):

```bash python manage.py createsuperuser ```

七、系统运行与实操演示

所有配置完成后,启动开发服务器:

```bash python manage.py runserver ``>

启动成功后,打开浏览器访问 http://127.0.0.1:8000/admin。使用刚才创建的超级用户账号登录。

1. 录入档案:

点击页面上的“消防许可证档案”旁边的“+增加”按钮。在表单中填写:

填写完毕后,点击“保存”按钮。

2. 查询与筛选:

回到列表页,在右上角的搜索框输入“某某商贸”,系统会实时过滤出该单位的档案。点击右侧的“有效期至”筛选器,可以快速查看特定年份的许可证。

3. 状态监控:

观察列表页的“状态”列,如果录入的许可证“有效期至”早于当前日期,该字段会显示红色的“已过期”,否则显示绿色的“有效”,方便管理人员快速进行年检提醒。

至此,一个具备增删改查、文件上传、状态监控功能的消防许可证档案管理系统已完全落地。整个系统代码量少,逻辑清晰,可直接部署在内网服务器中使用,无需额外的商业软件授权。

档案制度建设监督频率怎么设定?企事业单位实操参考指南
档案制度建设监督频率怎么设定?企事业单位实操参考指南
很多企事业单位做档案管理时,常常卡在监督环节:监督太频繁占用大量人力,监督太松散又容易出现档案丢失、不合规的问题。想要平衡管理成本和风险防控,找准合适的监督标准是关键。本文结合不同规模、不同类型单位的...
2026年09月18日 05:50:24
档案整理防火墙软件:给你的数字仓库安个防盗门
档案整理防火墙软件:给你的数字仓库安个防盗门
哎,哥们儿,今天咱不聊虚的,就唠唠你电脑里那个跟杂货铺似的文件夹。是不是每次找文件都像在垃圾堆里刨祖传宝贝?桌面图标多到能玩“找你妹”?更别提那些不知道从哪冒出来、名字起得跟摩斯密码似的临时文档了。我...
2026年09月18日 05:50:24
微信咨询
电话联系
QQ客服
微信咨询一对一服务
服务热线: 028-8744 4417
QQ客服: 2305721818