前置准备:环境与工具清单
所有工具均为免费开源,可直接获取,无需付费,清单如下:
- Python 3.10+,官方下载地址:
https://www.python.org/downloads/,安装时勾选Add Python to PATH选项
- Django 4.2,安装命令后续给出,无需提前下载
- SQLite3,Python自带,无需额外安装
- Layui 2.8前端模板,直接下载地址:
https://gitee.com/sentsin/layui/releases/download/v2.8.13/layui-v2.8.13.zip
- 云服务器与域名(仅对外提供服务需要,本地测试可省略)
项目初始化与基础配置
步骤1:创建项目结构
打开命令提示符,依次执行以下命令,完整复制即可:
```
创建项目根文件夹
mkdir archive-open
cd archive-open
安装Django 4.2
pip install django==4.2
创建Django项目
django-admin startproject archive_service .
创建档案查询应用
python manage.py startapp query
```
步骤2:修改项目配置文件
用文本编辑器打开archive_service/settings.py,按以下要求修改,替换对应部分内容即可:
```
修改INSTALLED_APPS,新增query应用
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'query',
新增批量导入功能依赖
'import_export',
]
修改ALLOWED_HOSTS,测试环境可配置为,上线替换为你的域名
ALLOWED_HOSTS = ['']
在文件末尾添加静态文件配置
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
```
执行命令安装批量导入依赖包:pip install django-import-export==3.1.0
步骤3:创建数据模型并初始化数据库
打开query/models.py,替换为以下完整内容:
```
from django.db import models
class OpenArchive(models.Model):
archive_number = models.CharField('档号', max_length=50, db_index=True)
title = models.CharField('档案题名', max_length=200, db_index=True)
year = models.IntegerField('年度', db_index=True)
category = models.CharField('类别', max_length=50)
keeper = models.CharField('保管单位', max_length=100)
opening_date = models.DateField('开放日期')
description = models.TextField('内容简介', blank=True, null=True)
is_opened = models.BooleanField('是否开放', default=True)
class Meta:
verbose_name = '开放档案'
verbose_name_plural = verbose_name
def __str__(self):
return self.title
```
打开query/admin.py,替换为以下内容,支持批量导入Excel数据:
```
from django.contrib import admin
from import_export.admin import ImportExportModelAdmin
from .models import OpenArchive
@admin.register(OpenArchive)
class OpenArchiveAdmin(ImportExportModelAdmin):
list_display = ['archive_number', 'title', 'year', 'category', 'is_opened']
list_filter = ['year', 'category', 'is_opened']
search_fields = ['title', 'archive_number']
```
执行数据库迁移和创建超级管理员命令,依次执行:
```
python manage.py makemigrations
python manage.py migrate
python manage.py createsuperuser
```

按提示输入用户名、邮箱、密码,密码要求8位以上,请记住账号密码,用于后台管理。
开发查询功能与前端页面
步骤1:配置路由
打开archive_service/urls.py,替换为以下完整内容:
```
from django.contrib import admin
from django.urls import path
from query import views
urlpatterns = [
path('admin/', admin.site.urls),
path('', views.index, name='index'),
path('search/', views.search, name='search'),
]
```
步骤2:编写查询视图逻辑
打开query/views.py,替换为以下完整内容:
```
from django.shortcuts import render
from .models import OpenArchive
def index(request):
return render(request, 'index.html')
def search(request):
keyword = request.GET.get('keyword', '').strip()
year = request.GET.get('year', '').strip()
condition = {'is_opened': True}
if keyword:
condition['title__icontains'] = keyword
if year and year.isdigit():
condition['year'] = int(year)
result = OpenArchive.objects.filter(condition)
return render(request, 'index.html', {'result': result, 'keyword': keyword, 'year': year})
```
步骤3:创建前端查询页面
在query目录下新建templates文件夹,在其中新建index.html;将之前下载的Layui解压,把解压后的layui文件夹复制到项目根目录,新建的static文件夹中。将以下内容复制到index.html:
```
档案开放查询服务
档案馆档案开放查询服务
{% if result %}
| 档号 |
档案题名 |
年度 |
类别 |
保管单位 |
开放日期 |
{% for item in result %}
| {{item.archive_number}} |
{{item.title}} |
{{item.year}} |
{{item.category}} |
{{item.keeper}} |
{{item.opening_date}} |
{% endfor %}
{% endif %}
```
本地测试与数据录入
执行命令启动本地服务:python manage.py runserver 0.0.0.0:8000
打开浏览器访问地址:本地测试为http://127.0.0.1:8000,服务器测试为http://你的服务器IP:8000,能正常打开查询页面即为成功。
登录后台录入数据:访问地址http://你的地址/admin,用之前创建的超级管理员账号登录,点击开放档案,可以选择导入功能,直接上传整理好的Excel格式档案数据,批量导入完成即可。
上线部署注意事项
- 安全配置:上线前必须修改settings.py中的
DEBUG = False,修改ALLOWED_HOSTS为你的实际域名,禁止保留ALLOWED_HOSTS = ['']
- 合规要求:仅录入符合开放规定的档案,涉密、未解密档案禁止录入开放查询库
- 数据备份:定期备份SQLite数据库文件,直接复制项目根目录下的db.sqlite3文件保存即可
按照以上步骤操作,即可完成可直接对外提供服务的档案开放查询系统,零额外成本,功能满足区县及地方综合档案馆的基本开放服务需求。