在开始构建铁岭档案管理软件之前,需要确保本地开发环境已配置好Python环境。本系统采用Python 3.10及Django 4.2框架进行开发,数据库使用默认的SQLite,无需额外配置数据库服务即可直接运行。
打开终端(Windows下打开CMD或PowerShell),执行以下命令安装核心依赖包。Pillow库用于处理档案中的图片或扫描件预览功能。
pip install django==4.2 pillow==10.0.0
安装完成后,执行以下命令创建项目目录及核心应用。我们将项目命名为tldoc(铁岭文档缩写),应用命名为core。
django-admin startproject tldoc
cd tldoc
python manage.py startapp core
打开core/models.py文件,定义档案管理的核心数据结构。我们需要包含档案标题、所属分类、文件实体、上传时间及备注信息。复制以下代码覆盖文件原有内容:
from django.db import models
import os
def upload_to(instance, filename):
return os.path.join('archives', filename)
class ArchiveCategory(models.Model):
name = models.CharField(max_length=100, verbose_name="分类名称")
code = models.CharField(max_length=20, unique=True, verbose_name="分类编码")
class Meta:
verbose_name = "档案分类"
verbose_name_plural = verbose_name
def __str__(self):
return self.name
class ArchiveDocument(models.Model):
title = models.CharField(max_length=200, verbose_name="档案标题")
category = models.ForeignKey(ArchiveCategory, on_delete=models.CASCADE, verbose_name="所属分类")
file = models.FileField(upload_to=upload_to, verbose_name="档案文件")
description = models.TextField(blank=True, null=True, verbose_name="备注说明")
created_at = models.DateTimeField(auto_now_add=True, verbose_name="归档日期")
class Meta:
verbose_name = "档案文档"
verbose_name_plural = verbose_name
ordering = ['-created_at']
def __str__(self):
return self.title
为了使应用生效并配置文件上传路径,需要修改tldoc/settings.py。请按照以下步骤精确修改对应位置:
1. 找到INSTALLED_APPS列表,在末尾添加'core':
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'core',
]
2. 在文件末尾添加媒体文件(上传文件)的存储路径配置:
import os
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
为了方便直接录入数据,我们将模型注册到Django后台。打开core/admin.py,输入以下代码:
from django.contrib import admin
from .models import ArchiveCategory, ArchiveDocument
@admin.register(ArchiveCategory)
class ArchiveCategoryAdmin(admin.ModelAdmin):
list_display = ('name', 'code')
search_fields = ('name',)
@admin.register(ArchiveDocument)
class ArchiveDocumentAdmin(admin.ModelAdmin):
list_display = ('title', 'category', 'created_at')
list_filter = ('category', 'created_at')
search_fields = ('title', 'description')
打开core/views.py,编写前端展示所需的视图逻辑。这里包含档案列表展示、档案上传处理和文件下载功能。复制以下完整代码:
from django.shortcuts import render, redirect, get_object_or_404
from django.views.generic import ListView
from .models import ArchiveDocument, ArchiveCategory
from django.core.files.storage import default_storage
from django.http import FileResponse
class ArchiveListView(ListView):
model = ArchiveDocument
template_name = 'core/index.html.html'
context_object_name = 'documents'
paginate_by = 10
def get_context_data(self, kwargs):
context = super().get_context_data(kwargs)
context['categories'] = ArchiveCategory.objects.all()
return context
def upload_view(request):
if request.method == 'POST':
title = request.POST.get('title')
category_id = request.POST.get('category')
file = request.FILES.get('file')
description = request.POST.get('description')
if title and category_id and file:
category = get_object_or_404(ArchiveCategory, id=category_id)
ArchiveDocument.objects.create(
title=title,
category=category,
file=file,
description=description
)
return redirect('index')
categories = ArchiveCategory.objects.all()
return render(request, 'core/upload.html', {'categories': categories})
def download_view(request, doc_id):
document = get_object_or_404(ArchiveDocument, id=doc_id)
file_path = document.file.path
if default_storage.exists(file_path):
return FileResponse(open(file_path, 'rb'), as_attachment=True, filename=document.title)
return redirect('index')
首先配置应用级路由。在core目录下新建urls.py文件,并写入:

from django.urls import path
from . import views
urlpatterns = [
path('', views.ArchiveListView.as_view(), name='index'),
path('upload/', views.upload_view, name='upload'),
path('download//', views.download_view, name='download'),
]
配置项目级路由。打开tldoc/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('core.urls')),
]
if settings.DEBUG:
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
在core目录下创建templates文件夹,并在其中创建core子文件夹。我们需要创建三个HTML文件:基础布局、列表页、上传页。
1. templates/core/base.html(基础布局):
铁岭档案管理系统
铁岭档案管理
档案归档
{% block content %}{% endblock %}
2. templates/core/index.html(档案列表页):
{% extends 'core/base.html' %}
{% block content %}
档案列表
标题
分类
归档日期
操作
{% for doc in documents %}
{{ doc.title }}
{{ doc.category.name }}
{{ doc.created_at|date:"Y-m-d H:i" }}
下载
{% empty %}
暂无档案数据
{% endfor %}
{% endblock %}
3. templates/core/upload.html(档案上传页):
{% extends 'core/base.html' %}
{% block content %}
新档案归档
{% endblock %}
代码编写完成后,需要进行数据库迁移和初始化操作。请依次执行以下命令:
1. 生成数据库迁移文件:
python manage.py makemigrations
2. 执行迁移,创建数据表:
python manage.py migrate
3. 创建超级管理员账户(用于后台添加分类):
python manage.py createsuperuser
按照提示输入用户名、邮箱和密码。
4. 启动开发服务器:
python manage.py runserver
启动成功后,打开浏览器访问http://127.0.0.1:8000即可看到铁岭档案管理系统的主界面。访问http://127.0.0.1:8000/admin并使用刚才创建的超级管理员账号登录,进入“档案分类”模块添加若干分类(如“人事档案”、“财务档案”),随后即可在前端页面进行完整的档案归档和下载操作。
档案整理行业认证,这玩意儿到底是不是你的职场“硬通货”?