网站首页/ 信息中心/ 行业信息/

从零搭建支持四性检测的电子档案系统实操指南

发布时间:2026年06月29日 07:30:21 浏览量:0

一、环境准备

使用Ubuntu 22.04 LTS系统,执行以下命令安装基础依赖:

```bash sudo apt update && sudo apt install -y python3.10 python3-pip pip install django djangorestframework ```

注意:国内用户可执行pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple加速包下载,确保网络畅通。

二、项目初始化与配置

1. 创建Django项目与应用

在指定目录执行以下命令生成项目结构:

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

2. 核心配置文件修改

完整替换e_archives/settings.py内容,配置权限、媒体存储、时区:

```python import os from pathlib import Path BASE_DIR = Path(__file__).resolve().parent.parent SECRET_KEY = 'django-insecure-safe-key-keep-it-private' DEBUG = True ALLOWED_HOSTS = [] INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'rest_framework', 'archive', ] MIDDLEWARE = [ 'django.middleware.security.SecurityMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.common.CommonMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware', ] ROOT_URLCONF = 'e_archives.urls' TEMPLATES = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': [], 'APP_DIRS': True, 'OPTIONS': { 'context_processors': [ 'django.template.context_processors.debug', 'django.template.context_processors.request', 'django.contrib.auth.context_processors.auth', 'django.contrib.messages.context_processors.messages', ], }, }, ] WSGI_APPLICATION = 'e_archives.wsgi.application' DATABASES = { 'default': { 'ENGINE': 'django.db.backends.sqlite3', 'NAME': BASE_DIR / 'db.sqlite3', } } AUTH_PASSWORD_VALIDATORS = [ {'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator'}, {'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator'}, {'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator'}, {'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator'}, ] LANGUAGE_CODE = 'zh-hans' TIME_ZONE = 'Asia/Shanghai' USE_I18N = True USE_TZ = True STATIC_URL = 'static/' MEDIA_ROOT = os.path.join(BASE_DIR, 'media') MEDIA_URL = '/media/' DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField' REST_FRAMEWORK = { 'DEFAULT_PERMISSION_CLASSES': [ 'rest_framework.permissions.IsAuthenticated', ] } ```

重点:配置媒体文件存储路径,确保档案上传后持久化存储,权限控制仅允许登录用户操作。

三、核心功能开发(含四性检测逻辑)

1. 定义电子档案模型

替换archive/models.py,新增四性检测字段:

```python from django.db import models from django.contrib.auth.models import User class ElectronicArchive(models.Model): file = models.FileField(upload_to='archives/') file_hash = models.CharField(max_length=64, unique=True) original_filename = models.CharField(max_length=255) file_size = models.BigIntegerField() create_time = models.DateTimeField(auto_now_add=True) is_real = models.BooleanField(default=False) 真实性 is_complete = models.BooleanField(default=False) 完整性 is_usable = models.BooleanField(default=False) 可用性 is_secure = models.BooleanField(default=False) 安全性 upload_user = models.ForeignKey(User, on_delete=models.CASCADE) ```

2. 序列化器与视图逻辑

新建archive/serializers.py,定义档案序列化规则:

```python from rest_framework import serializers from .models import ElectronicArchive class ArchiveSerializer(serializers.ModelSerializer): class Meta: model = ElectronicArchive fields = '__all__' read_only_fields = ['file_hash', 'is_real', 'is_complete', 'is_usable', 'is_secure'] ```

替换archive/views.py,实现文件上传、哈希计算、四性检测:

```python import hashlib import os from django.conf import settings from rest_framework import viewsets from rest_framework.decorators import action from rest_framework.response import Response from .models import ElectronicArchive from .serializers import ArchiveSerializer class ArchiveViewSet(viewsets.ModelViewSet): queryset = ElectronicArchive.objects.all() serializer_class = ArchiveSerializer def perform_create(self, serializer): file = self.request.FILES['file'] 计算SHA-256哈希(真实性校验核心) hash_obj = hashlib.sha256() for chunk in file.chunks(): hash_obj.update(chunk) file_hash = hash_obj.hexdigest() 保存档案基础元数据 serializer.save( file=file, file_hash=file_hash, original_filename=file.name, file_size=file.size, upload_user=self.request.user ) 执行四性检测 archive = serializer.instance 真实性:系统内无相同哈希则有效 archive.is_real = not ElectronicArchive.objects.filter(file_hash=file_hash).exclude(pk=archive.pk).exists() 完整性:文件非空且哈希生成成功 archive.is_complete = (file.size > 0) and (len(file_hash) == 64) 可用性:仅允许指定格式 allowed_formats = ['.pdf', '.doc', '.docx', '.jpg', '.png'] ext = os.path.splitext(file.name)[1].lower() archive.is_usable = ext in allowed_formats 安全性:大小≤10MB且无恶意后缀 forbidden_exts = ['.exe', '.bat', '.sh', '.dll'] archive.is_secure = (file.size <= 10485760) and (ext not in forbidden_exts) archive.save() 自定义接口:查询四性检测结果 @action(detail=True, methods=['get']) def check_results(self, request, pk=None): archive = self.get_object() return Response({ '真实性': archive.is_real, '完整性': archive.is_complete, '可用性': archive.is_usable, '安全性': archive.is_secure }) ```

3. 配置路由

从零搭建支持四性检测的电子档案系统实操指南

替换e_archives/urls.py,绑定API路由:

```python from django.contrib import admin from django.urls import path, include from rest_framework.routers import DefaultRouter from archive.views import ArchiveViewSet from django.conf import settings from django.conf.urls.static import static router = DefaultRouter() router.register(r'archive', ArchiveViewSet) urlpatterns = [ path('admin/', admin.site.urls), path('api/', include(router.urls)), ] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) ```

四、启动与功能测试

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 ```

4. 验证四性检测

1. 访问http://127.0.0.1:8000/admin,用超级用户登录;

2. 点击「电子档案」→「添加」,上传符合要求的文件;

3. 访问http://127.0.0.1:8000/api/archive/,找到对应档案ID;

4. 访问http://127.0.0.1:8000/api/archive/[档案ID]/check_results,查看四性检测结果。

可调整项:修改archive/views.py中的allowed_formats、forbidden_exts和文件大小,可自定义检测规则。

档案法文书档案全流程管理指南:从创建到销毁的合规实操
档案法文书档案全流程管理指南:从创建到销毁的合规实操
在日常工作中,文书档案的管理常常让人头疼——文件散落、查找困难、归档标准不一,还可能面临合规风险。本文将以《档案法》为核心依据,为你系统梳理文书档案从创建、整理、保管到利用与销毁的全生命周期管理要点。...
2026年06月29日 07:30:21
档案系统与OA集成方案:企业管理效率升级的实用指南
档案系统与OA集成方案:企业管理效率升级的实用指南
家人们,谁懂行政的痛?我之前在某中型企业当行政部的“救火队员”,说直白点就是啥破事都找我:新员工入职一周了工牌还没发(因为OA入职流程没和档案系统对接,档案没立起来),部门要调员工档案,我得跑两个系统...
2026年06月29日 07:30:21
微信咨询
电话联系
QQ客服
微信咨询一对一服务
服务热线: 028-8744 4417
QQ客服: 2305721818