环境准备与依赖安装
在开始构建厦门档案管理软件之前,必须确保本地开发环境已配置好Python运行环境。本指南基于Python 3.9版本和Django 4.2 LTS框架进行开发,这两个版本组合具有极高的稳定性,适合企业级应用落地。我们需要在终端中执行以下命令来创建一个独立的虚拟环境,以避免依赖冲突。
1. 创建并激活虚拟环境
打开命令行工具,依次执行以下指令:
```bash
mkdir xiamen_archive_project
cd xiamen_archive_project
python3.9 -m venv venv
source venv/bin/activate
```
对于Windows用户,激活虚拟环境的命令应调整为 venv\Scripts\activate。激活成功后,命令行前缀会出现 (venv) 标识。
2. 安装核心依赖包
接下来,安装Django框架以及处理图片和文件所需的Pillow库。执行以下安装命令:
```bash
pip install django==4.2.5 pillow==10.0.1
```
为了确保后续部署顺利,建议将依赖包版本导出到文件中:
```bash
pip freeze > requirements.txt
```
项目初始化与目录结构构建
环境配置完成后,我们将创建Django项目和应用。为了符合“厦门档案管理”的业务特性,我们将项目命名为 xiamen_archive_sys,核心应用命名为 archive_core。
1. 创建Django项目与应用
在项目根目录下执行:
```bash
django-admin startproject xiamen_archive_sys .
python manage.py startapp archive_core
```
2. 注册应用
打开 xiamen_archive_sys/settings.py 文件,找到 INSTALLED_APPS 列表,将我们创建的应用添加进去,同时为了方便管理后台,也默认注册Django自带的admin应用:
```python
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'archive_core', 注册核心档案应用
]
```
核心数据模型设计
档案管理软件的核心在于对文件元数据的精准管理。我们需要设计两个主要模型:ArchiveCategory(档案分类)和 ArchiveDocument(档案实体)。请打开 archive_core/models.py 文件,将原有代码全部替换为以下内容:
```python
from django.db import models
from django.utils import timezone
class ArchiveCategory(models.Model):
name = models.CharField(max_length=100, verbose_name="分类名称", unique=True)
code = models.CharField(max_length=20, verbose_name="分类编码", unique=True)
created_at = models.DateTimeField(auto_now_add=True, verbose_name="创建时间")
class Meta:
verbose_name = "档案分类"
verbose_name_plural = verbose_name
ordering = ['code']
def __str__(self):
return self.name
class ArchiveDocument(models.Model):
STATUS_CHOICES = (
('draft', '草稿'),
('active', '归档'),
('archived', '封存'),
)
title = models.CharField(max_length=200, verbose_name="档案标题")
doc_id = models.CharField(max_length=50, verbose_name="档案编号", unique=True)
category = models.ForeignKey(ArchiveCategory, on_delete=models.PROTECT, verbose_name="所属分类")
file = models.FileField(upload_to='archives/%Y/%m/%d/', verbose_name="档案文件")
status = models.CharField(max_length=20, choices=STATUS_CHOICES, default='draft', verbose_name="状态")
description = models.TextField(blank=True, null=True, verbose_name="档案描述")
upload_time = models.DateTimeField(default=timezone.now, verbose_name="上传时间")
updated_time = models.DateTimeField(auto_now=True, verbose_name="更新时间")
class Meta:
verbose_name = "档案文档"
verbose_name_plural = verbose_name
ordering = ['-upload_time']
def __str__(self):
return f"{self.doc_id} - {self.title}"
```
这段代码定义了完整的字段结构,包括文件上传路径的自动按日期归档逻辑(upload_to='archives/%Y/%m/%d/'),这对于海量档案管理至关重要。
系统配置与媒体文件处理
为了确保上传的档案能够被正确存储和访问,需要修改 settings.py 中的静态文件和媒体文件配置。请在文件末尾添加以下配置:
```python
import os
媒体文件配置(用于存放用户上传的档案)
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
静态文件配置
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')
```
同时,必须配置项目的路由以支持开发环境下的媒体文件访问。打开 xiamen_archive_sys/urls.py,修改为:
```python
from django.contrib import admin
from django.urls import path, re_path
from django.conf import settings
from django.conf.urls.static import static
from django.views.static import serve
urlpatterns = [
path('admin/', admin.site.urls),
]
开发环境下提供媒体文件服务
if settings.DEBUG:
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
或者使用 re_path 方式兼容旧版本
urlpatterns += [re_path(r'^media/(?P
.)$', serve, {'document_root': settings.MEDIA_ROOT}),]
```
后台管理功能深度定制
Django Admin是一个强大的后台系统,我们通过简单的配置即可获得一个功能完备的档案管理界面。打开 archive_core/admin.py,输入以下代码:
```python
from django.contrib import admin
from .models import ArchiveCategory, ArchiveDocument
@admin.register(ArchiveCategory)
class ArchiveCategoryAdmin(admin.ModelAdmin):
list_display = ('code', 'name', 'created_at')
search_fields = ('name', 'code')
@admin.register(ArchiveDocument)
class ArchiveDocumentAdmin(admin.ModelAdmin):
list_display = ('doc_id', 'title', 'category', 'status', 'upload_time')
list_filter = ('status', 'category', 'upload_time')
search_fields = ('title', 'doc_id', 'description')
readonly_fields = ('upload_time', 'updated_time')
list_per_page = 20
fieldsets = (
('基本信息', {
'fields': ('title', 'doc_id', 'category', 'status')
}),
('文件内容', {
'fields': ('file', 'description')
}),
('时间戳', {
'fields': ('upload_time', 'updated_time'),
'classes': ('collapse',)
}),
)
```
此配置实现了列表页的字段展示、右侧筛选栏、顶部搜索框以及表单页的字段分组,极大提升了后台操作效率。
数据库迁移与系统启动

代码编写完成后,需要将模型变更同步到数据库中。Django默认使用SQLite数据库,对于中小型档案管理系统,SQLite无需额外配置即可满足高性能读写需求。
1. 生成并执行迁移文件
在终端依次执行:
```bash
python manage.py makemigrations
python manage.py migrate
```
2. 创建超级管理员
执行以下命令创建后台登录账号,按照提示输入用户名、邮箱和密码:
```bash
python manage.py createsuperuser
```
3. 启动开发服务器
执行以下命令启动服务:
```bash
python manage.py runserver 0.0.0.0:8000
```
看到输出 Starting development server at http://0.0.0.0:8000/ 即表示启动成功。
功能验证与实操测试
最后一步是对系统进行全流程测试,确保所有功能符合“厦门档案管理软件”的业务预期。
1. 访问后台管理系统
打开浏览器,访问 http://127.0.0.1:8000/admin。使用刚才创建的超级管理员账号登录。
2. 创建档案分类
在管理首页点击“档案分类”右侧的“增加”按钮。输入分类名称“人事档案”,分类编码“RS001”,点击“保存”。再创建一个“财务档案”,编码“CW001”。
3. 上传档案文档
点击“档案文档”右侧的“增加”按钮。填写以下信息进行测试:
- 档案标题:2023年度员工入职登记表
- 档案编号:RS-2023-001(系统会校验唯一性)
- 所属分类:选择“人事档案”
- 状态:选择“归档”
- 档案文件:点击“选择文件”,上传本地的一个PDF或图片文件
- 档案描述:包含员工基础信息的登记表
点击“保存”后,系统会自动跳转至列表页,你可以看到刚才上传的记录,并且文件路径会自动按“年/月/日”格式存储。
4. 搜索与筛选测试
在列表页右上角的搜索框输入“RS-2023”,系统应能实时过滤出该条记录。点击右侧的“状态”或“所属分类”筛选器,验证数据过滤功能是否正常。
至此,一套基于Django框架、具备文件上传、分类管理、状态追踪功能的厦门档案管理软件已完全落地。通过以上步骤,你已拥有了一个可扩展、高可用的档案管理系统底座,后续可根据业务需求添加API接口或前端展示页面。