阳江档案数字化:从零搭建本地档案管理系统实操指南

一、准备工作:明确需求与选择技术栈

在开始搭建前,你需要明确两个核心需求:管理哪些类型的档案(如文书、照片、音视频)以及需要哪些功能(如检索、借阅、备份)。对于阳江地区常见的档案管理,我们选择基于Python的Django框架和SQLite数据库,因为它轻量、易部署且功能强大。

你需要准备以下环境:

  • 一台运行Windows 10/11或主流Linux发行版的电脑。
  • 稳定的网络连接,用于下载必要的软件包。

首先安装Python。访问Python官网下载页面,下载适用于你操作系统的最新稳定版本(如3.11.4)。安装时,请务必勾选“Add Python to PATH”选项

安装完成后,打开命令提示符(CMD)或终端,验证安装:

python --version
pip --version

这两条命令应分别返回Python和pip的版本号。

二、项目环境搭建与初始化

首先创建一个专用于本项目的文件夹,例如D:\yangjiang_archive。所有后续操作都在此目录下进行。

在命令行中进入该目录,然后创建虚拟环境以隔离项目依赖:

cd D:\yangjiang_archive
python -m venv venv

激活虚拟环境:

  • Windows: venv\Scripts\activate
  • Linux/macOS: source venv/bin/activate

激活后,命令行提示符前会出现(venv)标记。

接下来安装Django和用于处理文件上传的库:

pip install django pillow

安装完成后,创建Django项目和应用:

django-admin startproject archive_project .
python manage.py startapp archive_app

注意第一条命令末尾的点号“.”,它表示在当前目录创建项目

三、数据模型设计与数据库配置

档案管理的核心是数据模型。我们设计一个“档案卷宗”模型,包含基本元数据。打开archive_app/models.py文件,清空原有内容,写入以下代码:

from django.db import models
import os
def archive_file_path(instance, filename):
文件将保存到 media/archive_files/年/月/档案编号_文件名
return os.path.join('archive_files', str(instance.create_date.year), str(instance.create_date.month), f"{instance.archive_code}_{filename}")
class ArchiveVolume(models.Model):
档案编号,唯一标识
archive_code = models.CharField(max_length=50, unique=True, verbose_name='档案编号')
档案标题
title = models.CharField(max_length=200, verbose_name='档案标题')
责任者(立档单位或个人)
creator = models.CharField(max_length=100, verbose_name='责任者')
成文或归档日期
create_date = models.DateField(verbose_name='归档日期')
保管期限:永久、30年、10年
retention_period = models.CharField(max_length=20, choices=[('permanent', '永久'), ('30years', '30年'), ('10years', '10年')], verbose_name='保管期限')
密级:公开、内部、秘密等
security_classification = models.CharField(max_length=20, default='公开', verbose_name='密级')
物理位置,如档案室-柜号-层号
physical_location = models.CharField(max_length=100, verbose_name='物理位置')
档案数字文件(支持PDF、图片等)
digital_file = models.FileField(upload_to=archive_file_path, blank=True, null=True, verbose_name='数字文件')
摘要或备注
description = models.TextField(blank=True, verbose_name='摘要备注')
自动记录创建和更新时间
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
def __str__(self):
return f"{self.archive_code} - {self.title}"

archive_project/settings.py文件中,找到INSTALLED_APPS列表,添加我们创建的应用:

INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'archive_app',  添加这一行
]

同时,在同一个settings.py文件的末尾,添加媒体文件存储配置:

 静态文件配置 (CSS, JavaScript, Images)
STATIC_URL = 'static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')
媒体文件配置 (用户上传的文件)
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')

接下来,生成数据库迁移文件并应用,以在SQLite数据库中创建对应的表:

阳江档案数字化:从零搭建本地档案管理系统实操指南

python manage.py makemigrations archive_app
python manage.py migrate

四、创建管理后台与档案录入界面

Django自带强大的后台管理。我们需要将模型注册到后台。打开archive_app/admin.py文件,写入:

from django.contrib import admin
from .models import ArchiveVolume
class ArchiveVolumeAdmin(admin.ModelAdmin):
list_display = ('archive_code', 'title', 'creator', 'create_date', 'retention_period', 'physical_location')
search_fields = ('archive_code', 'title', 'creator')
list_filter = ('create_date', 'retention_period', 'security_classification')
date_hierarchy = 'create_date'
admin.site.register(ArchiveVolume, ArchiveVolumeAdmin)

然后创建一个超级用户来登录后台:

python manage.py createsuperuser

按照提示输入用户名、邮箱和密码。

现在,启动开发服务器:

python manage.py runserver

在浏览器中访问 http://127.0.0.1:8000/admin/,使用刚才创建的超级用户登录。你就能看到“Archive volumes”模型,可以在这里进行档案的增、删、改、查。

五、实现基础前端查询页面

为了让非管理员也能查询档案,我们需要创建一个简单的查询页面。

archive_app目录下创建templates文件夹,再在其中创建archive_app文件夹,最后创建search.html文件。完整路径为:archive_app/templates/archive_app/search.html。文件内容如下:





阳江档案查询系统



阳江档案查询

{% if archives %} {% for archive in archives %} {% endfor %}
档案编号 档案标题 责任者 归档日期 保管期限 物理位置
{{ archive.archive_code }} {{ archive.title }} {{ archive.creator }} {{ archive.create_date }} {{ archive.get_retention_period_display }} {{ archive.physical_location }}
{% elif query %}

未找到相关档案。

{% endif %}

我们需要创建视图来处理查询逻辑。打开archive_app/views.py,写入:

from django.shortcuts import render
from .models import ArchiveVolume
from django.db.models import Q
def archive_search(request):
query = request.GET.get('q', '')
period = request.GET.get('period', '')
archives = ArchiveVolume.objects.all().order_by('-create_date')
if query:
archives = archives.filter(
Q(archive_code__icontains=query) |
Q(title__icontains=query) |
Q(creator__icontains=query)
)
if period:
archives = archives.filter(retention_period=period)
context = {
'archives': archives,
'query': query,
'period': period,
}
return render(request, 'archive_app/search.html', context)

配置URL路由。在archive_app目录下创建urls.py文件,写入:

from django.urls import path
from . import views
urlpatterns = [
path('search/', views.archive_search, name='archive_search'),
]

再修改项目主路由文件archive_project/urls.py,将其内容替换为:

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

重启开发服务器(如果已运行,按Ctrl+C停止后再次运行python manage.py runserver)。现在访问 http://127.0.0.1:8000/search/,就能看到查询页面,并可以通过关键词和保管期限筛选档案。

六、数据备份与系统迁移

1. 数据库备份

系统运行后,定期备份数据库至关重要。在项目根目录下,创建一个批处理文件(Windows)或Shell脚本(Linux)进行自动备份。以下是Windows的backup.bat示例:

@echo off
set BACKUP_DIR=D:\yangjiang_archive_backups
if not exist "%BACKUP_DIR%" mkdir "%BACKUP_DIR%"
set DATESTAMP=%date:~0,4%%date:~5,2%%date:~8,2%
copy .\db.sqlite3 "%BACKUP_DIR%\db_backup_%DATESTAMP%.sqlite3"
echo 数据库备份完成于 %date% %time% >> "%BACKUP_DIR%\backup_log.txt"

将第一行的D:\yangjiang_archive_backups替换为你希望存放备份的实际路径。你可以使用Windows任务计划程序定期执行此脚本。

2. 媒体文件备份

同样,需要备份用户上传的档案数字文件。在backup.bat中添加一行:

xcopy .\media\ "%BACKUP_DIR%\media_%DATESTAMP%\" /E /I /H /Y

3. 迁移到其他服务器

若需将系统部署到其他电脑或服务器,请按顺序执行以下步骤:

  • 在目标机器上重复“准备工作”和“项目环境搭建”步骤,创建相同的虚拟环境并安装依赖。
  • 将整个项目文件夹(包括db.sqlite3media文件夹)复制到目标机器。
  • 在目标机器上,进入项目目录,激活虚拟环境,运行python manage.py runserver 0.0.0.0:8000启动服务。现在,局域网内的其他用户可以通过目标机器的IP地址和端口8000访问系统。
AI咨询
热线电话

028-85154420

15388110056

全国售前咨询电话

扫码咨询
安答联动微信公众号二维码

微信扫码关注安答联动

申请试用
热线电话
申请试用

安答联动档案管理系统