基于Python快速构建档案项目管理系统全流程实录

环境准备与依赖安装

在开始构建档案项目管理系统之前,必须先搭建好基础的开发环境。本系统基于Python语言开发,使用Django框架作为后端核心,利用其强大的ORM和Admin功能快速实现数据管理。前端采用Bootstrap 5进行快速布局,确保界面整洁美观。

请在终端中执行以下命令来创建项目目录并初始化虚拟环境。虚拟环境能够隔离项目依赖,避免版本冲突。

 创建项目文件夹
mkdir archive_system
cd archive_system
创建Python虚拟环境
python3 -m venv venv
激活虚拟环境(Windows使用 venv\Scripts\activate)
source venv/bin/activate
安装Django框架及处理图片文件的Pillow库
pip install django==4.2 pillow

注意:请确保你的Python版本不低于3.8。Django 4.2是一个长期支持版本,稳定性极高,非常适合生产环境部署。

项目初始化与基础配置

环境准备好后,我们需要创建Django项目和应用。执行以下命令生成基础项目结构:

 创建Django项目,名为config
django-admin startproject config .
创建核心应用,名为core
python manage.py startapp core

接下来,打开config/settings.py文件,进行必要的配置修改。我们需要将新建的core应用注册到INSTALLED_APPS中,并配置静态文件和媒体文件的存储路径,以便后续上传和管理档案文件。

INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'core',   注册自定义应用
]
配置媒体文件路径(用于上传的档案文件)
import os
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
设置语言和时区
LANGUAGE_CODE = 'zh-hans'
TIME_ZONE = 'Asia/Shanghai'
USE_TZ = True

同时,为了在开发阶段能够通过浏览器直接访问上传的文件,需要在config/urls.py中添加静态文件服务的配置:

from django.contrib import admin
from django.urls import path, static
from django.conf import settings
from django.conf.urls.static import static
urlpatterns = [
path('admin/', admin.site.urls),
path('', include('core.urls')),  引入应用路由
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

数据模型设计

档案管理系统的核心在于数据结构。我们需要设计一个模型来存储档案的元数据,包括项目名称、档案类别、文件本身、上传时间以及备注信息。打开core/models.py文件,编写如下代码:

from django.db import models
class ProjectArchive(models.Model):
CATEGORY_CHOICES = (
('tech', '技术文档'),
('contract', '合同文件'),
('blueprint', '工程图纸'),
('other', '其他资料'),
)
project_name = models.CharField(max_length=200, verbose_name='项目名称')
category = models.CharField(max_length=20, choices=CATEGORY_CHOICES, default='other', verbose_name='档案类别')
file = models.FileField(upload_to='archives/%Y/%m/%d/', verbose_name='档案文件')
description = models.TextField(blank=True, null=True, verbose_name='备注说明')
uploaded_at = models.DateTimeField(auto_now_add=True, verbose_name='上传时间')
class Meta:
verbose_name = '项目档案'
verbose_name_plural = verbose_name
ordering = ['-uploaded_at']
def __str__(self):
return f"{self.project_name} - {self.get_category_display()}"

模型定义完成后,必须执行数据库迁移命令以生成相应的数据表。Django默认使用SQLite数据库,无需额外安装数据库服务即可直接运行。

 生成迁移文件
python manage.py makemigrations
执行迁移
python manage.py migrate

后台管理系统注册

Django自带了一个功能强大的后台管理系统,我们只需将模型注册进去,即可立刻拥有一个增删改查(CRUD)的管理界面。打开core/admin.py,配置如下:

from django.contrib import admin
from .models import ProjectArchive
@admin.register(ProjectArchive)
class ProjectArchiveAdmin(admin.ModelAdmin):
list_display = ('project_name', 'category', 'uploaded_at', 'file_link')
list_filter = ('category', 'uploaded_at')
search_fields = ('project_name', 'description')
list_per_page = 20
def file_link(self, obj):
if obj.file:
return format_html('下载文件', obj.file.url)
return "无文件"
file_link.short_description = '文件链接'

注意:这里使用了format_html来生成安全的HTML链接,请在文件头部添加from django.utils.html import format_html

表单与视图逻辑开发

基于Python快速构建档案项目管理系统全流程实录

虽然后台已经可以使用,但为了满足普通用户上传档案的需求,我们需要开发一个前台页面。在core目录下创建forms.py文件,用于处理表单验证:

from django import forms
from .models import ProjectArchive
class ArchiveUploadForm(forms.ModelForm):
class Meta:
model = ProjectArchive
fields = ['project_name', 'category', 'file', 'description']
widgets = {
'description': forms.Textarea(attrs={'rows': 4}),
}

接着,编写视图逻辑core/views.py,实现档案列表展示和上传处理功能:

from django.shortcuts import render, redirect
from .models import ProjectArchive
from .forms import ArchiveUploadForm
def archive_list(request):
archives = ProjectArchive.objects.all()
return render(request, 'core/list.html', {'archives': archives})
def upload_archive(request):
if request.method == 'POST':
form = ArchiveUploadForm(request.POST, request.FILES)
if form.is_valid():
form.save()
return redirect('archive_list')
else:
form = ArchiveUploadForm()
return render(request, 'core/upload.html', {'form': form})

路由配置与模板开发

core目录下创建urls.py,设置URL路由映射:

from django.urls import path
from . import views
urlpatterns = [
path('', views.archive_list, name='archive_list'),
path('upload/', views.upload_archive, name='upload_archive'),
]

现在开始创建模板文件。首先在core目录下创建templates/core目录结构。创建基础模板base.html引入Bootstrap 5:






档案项目管理系统




{% block content %}{% endblock %}

创建列表页templates/core/list.html

{% extends 'core/base.html' %}
{% block content %}

档案列表

{% for item in archives %} {% empty %} {% endfor %}
项目名称 类别 上传时间 操作
{{ item.project_name }} {{ item.get_category_display }} {{ item.uploaded_at|date:"Y-m-d H:i" }} 下载
暂无档案数据
{% endblock %}

创建上传页templates/core/upload.html,注意表单必须包含enctype="multipart/form-data"属性:

{% extends 'core/base.html' %}
{% block content %}

上传新档案

{% csrf_token %} {{ form.as_p }} 返回
{% endblock %}

系统启动与功能验证

所有代码和配置已就绪。在启动服务之前,我们需要创建一个超级管理员账号,以便登录Django后台进行高级管理操作。

 创建超级用户
python manage.py createsuperuser
按照提示输入用户名、邮箱和密码

现在,启动开发服务器:

python manage.py runserver

打开浏览器,访问http://127.0.0.1:8000,你将看到档案列表页面。点击右上角的“上传档案”按钮,填写项目名称、选择类别、上传文件并提交。提交成功后,系统会自动跳转回列表页,显示新上传的档案信息。

访问http://127.0.0.1:8000/admin,使用刚才创建的超级用户账号登录,即可进入后台管理系统,在这里对数据进行更精细的筛选、搜索和批量管理操作。

至此,一个具备基础文件上传、列表展示、分类筛选及后台管理功能的档案项目管理系统已经完全落地。该系统结构清晰,易于扩展,可根据实际业务需求进一步增加用户权限控制或报表统计功能。

AI咨询
热线电话

028-85154420

15388110056

全国售前咨询电话

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

微信扫码关注安答联动

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

安答联动档案管理系统