一、前期环境准备
本系统采用Python轻量架构,无需复杂数据库配置,普通用户可零门槛完成搭建,按照以下步骤依次操作即可:
1. 安装Python运行环境
直接打开下载地址:https://www.python.org/downloads/,下载对应你操作系统(Windows/MacOS)的最新稳定版安装包,安装时必须勾选「Add Python.exe to PATH」选项,再点击安装即可,全程默认配置不需要修改。
2. 安装项目依赖
安装完成后,打开电脑的命令提示符(Windows按Win+R输入cmd回车,MacOS打开终端),输入以下命令,即可完成依赖安装,已自动配置国内清华源,不会出现安装过慢问题:
```
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple flask flask-sqlalchemy
```
如果需要增加账号密码登录功能,额外执行以下命令即可:
```
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple flask-login
```
等待安装完成,没有报错即可进入下一步。
二、项目结构搭建
1. 创建目录与核心文件

在电脑任意位置新建文件夹,命名为print-license-system,在文件夹内新建空白文件,命名为app.py,将以下完整代码复制粘贴到文件中,可直接使用:
```
from flask import Flask, render_template, request, redirect
from flask_sqlalchemy import SQLAlchemy
from datetime import datetime, timedelta
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///../instance/print_license.db'
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
app.jinja_env.globals.update(datetime=datetime, timedelta=timedelta)
db = SQLAlchemy(app)
许可证档案数据模型
class LicenseArchive(db.Model):
id = db.Column(db.Integer, primary_key=True)
license_no = db.Column(db.String(50), unique=True, nullable=False)
company_name = db.Column(db.String(100), nullable=False)
issue_date = db.Column(db.Date, nullable=False)
expire_date = db.Column(db.Date, nullable=False)
issue_org = db.Column(db.String(100), nullable=False)
scan_path = db.Column(db.String(200))
create_time = db.Column(db.DateTime, default=datetime.now)
初始化数据库
with app.app_context():
db.create_all()
首页:展示即将到期档案+全量列表
@app.route('/')
def index():
soon_expire = LicenseArchive.query.filter(LicenseArchive.expire_date <= datetime.now().date() + timedelta(days=30)).filter(LicenseArchive.expire_date >= datetime.now().date()).all()
all_archive = LicenseArchive.query.order_by(LicenseArchive.expire_date).all()
return render_template('index.html', soon_expire=soon_expire, all_archive=all_archive)
新增/编辑档案
@app.route('/edit', methods=['GET', 'POST'])
@app.route('/edit/
', methods=['GET', 'POST'])
def edit(id=None):
if request.method == 'POST':
data = request.form
if id:
archive = LicenseArchive.query.get(id)
archive.license_no = data['license_no']
archive.company_name = data['company_name']
archive.issue_date = datetime.strptime(data['issue_date'], '%Y-%m-%d').date()
archive.expire_date = datetime.strptime(data['expire_date'], '%Y-%m-%d').date()
archive.issue_org = data['issue_org']
archive.scan_path = data['scan_path']
else:
archive = LicenseArchive(
license_no = data['license_no'],
company_name = data['company_name'],
issue_date = datetime.strptime(data['issue_date'], '%Y-%m-%d').date(),
expire_date = datetime.strptime(data['expire_date'], '%Y-%m-%d').date(),
issue_org = data['issue_org'],
scan_path = data['scan_path']
)
db.session.add(archive)
db.session.commit()
return redirect('/')
archive = LicenseArchive.query.get(id) if id else None
return render_template('edit.html', archive=archive)
删除档案
@app.route('/delete/')
def delete(id):
archive = LicenseArchive.query.get(id)
db.session.delete(archive)
db.session.commit()
return redirect('/')
if __name__ == '__main__':
app.run(debug=False)
```
2. 创建前端页面文件
在项目文件夹print-license-system内新建文件夹,命名为templates,在templates内新建两个文件:index.html和edit.html,分别复制对应代码:
index.html代码:
```
印刷经营许可证档案管理
印刷经营许可证档案管理系统
{% if soon_expire|length > 0 %}
⚠️ 30天内到期许可证提醒
{% for item in soon_expire %}
- {{ item.company_name }} | 许可证号:{{ item.license_no }} | 到期日期:{{ item.expire_date }}
{% endfor %}
{% endif %}
新增档案
| 许可证编号 |
单位名称 |
发证日期 |
到期日期 |
发证机关 |
操作 |
{% for item in all_archive %}
= datetime.now().date() %}class="expire-soon andaliandongopft-wnri-u5sp"{% endif %}>
| {{ item.license_no }} |
{{ item.company_name }} |
{{ item.issue_date }} |
{{ item.expire_date }} |
{{ item.issue_org }} |
编辑
删除
|
{% endfor %}
```
edit.html代码:
```
{% if archive %}编辑{% else %}新增{% endif %}许可证档案
```
三、启动运行与日常使用
1. 启动系统
打开命令提示符,进入项目目录(例如Windows下输入cd C:\Users\你的用户名\Desktop\print-license-system),输入启动命令:
```
python app.py
```
如果没有报错,会输出提示信息,打开浏览器输入http://127.0.0.1:5000即可进入系统使用。
2. 核心功能说明
- 档案归档:点击首页「新增档案」,填写所有必填项,扫描件填写本地存储路径即可快速查找,保存后完成归档。
- 到期提醒:系统自动在首页展示30天内即将到期的许可证,列表中也会高亮标注,无需手动筛选。
- 数据备份:所有数据存储在项目目录的
instance/print_license.db文件中,定期拷贝该文件到U盘即可完成备份,恢复时直接替换文件即可。
四、常见问题解决
- 提示「pip不是内部或外部命令」:原因是安装Python时未勾选PATH选项,重新运行安装包,选择修改配置,勾选Add Python to PATH后保存即可。
- 打开页面显示数据库错误:检查项目目录下是否存在instance文件夹,如果没有手动新建一个,重新启动即可。
- 需要外网访问:可以使用花生壳内网穿透,将本地5000端口映射到外网即可,不需要修改系统代码。