一、前置环境准备
本案例针对基层交通执法单位需求,搭建轻量可直接使用的档案管理系统,无需复杂基础设施,零门槛即可落地。
1.1 安装Python环境
下载Python 3.10稳定版,地址:https://www.python.org/downloads/release/python-31011/
关键注意事项:安装过程中必须勾选「Add Python to PATH」选项,否则后续命令无法运行,默认安装即可完成。
1.2 安装项目依赖
安装完成后按下Win+R输入cmd打开命令提示符,直接复制执行以下命令,自动安装所有依赖:
```
pip install flask flask_sqlalchemy werkzeug==2.2.3
```
1.3 创建项目目录结构
在D盘新建根文件夹命名为traffic_archive,按以下结构创建子文件夹:
- D:\traffic_archive\templates (存放前端页面)
- D:\traffic_archive\static\uploads (存放档案扫描件)
所有文件后续按路径存放即可。
二、编写项目核心代码
2.1 编写主程序文件
在D:\traffic_archive目录下新建文件命名为app.py,复制以下完整代码即可,无需修改:
```
from flask import Flask, render_template, request, redirect
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///traffic_archive.db'
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
db = SQLAlchemy(app)
交通执法档案数据模型,贴合业务需求
class TrafficArchive(db.Model):
id = db.Column(db.Integer, primary_key=True)
archive_no = db.Column(db.String(20), unique=True, nullable=False)
law_enforce_time = db.Column(db.String(10), nullable=False)
illegal_type = db.Column(db.String(50), nullable=False)
plate_no = db.Column(db.String(10), nullable=False)
party_name = db.Column(db.String(50), nullable=False)
document_path = db.Column(db.String(200), nullable=False)
def __repr__(self):
return '
' % self.archive_no
首页搜索路由
@app.route('/', methods=['GET'])
def index():
keyword = request.args.get('keyword', '')
if keyword:
archives = TrafficArchive.query.filter(
(TrafficArchive.plate_no.contains(keyword)) |
(TrafficArchive.archive_no.contains(keyword))
).all()
else:
archives = TrafficArchive.query.all()
return render_template('index.html', archives=archives, keyword=keyword)
新增档案路由
@app.route('/add', methods=['GET', 'POST'])
def add():
if request.method == 'POST':
new_archive = TrafficArchive(
archive_no = request.form.get('archive_no'),
law_enforce_time = request.form.get('law_enforce_time'),
illegal_type = request.form.get('illegal_type'),
plate_no = request.form.get('plate_no'),
party_name = request.form.get('party_name'),
document_path = request.form.get('document_path')
)
db.session.add(new_archive)
db.session.commit()
return redirect('/')
return render_template('add.html')
删除档案路由
@app.route('/delete/')
def delete(id):
archive = TrafficArchive.query.get_or_404(id)
db.session.delete(archive)
db.session.commit()
return redirect('/')
if __name__ == '__main__':
app.run(debug=False)
```
2.2 编写前端页面文件
在templates文件夹新建index.html,复制以下代码:
```
交通执法档案管理系统
交通执法档案管理系统
新增档案
| 档案编号 | 执法日期 | 违法类型 | 车牌号 | 当事人 | 操作 |
{% for archive in archives %}
| {{archive.archive_no}} | {{archive.law_enforce_time}} | {{archive.illegal_type}} | {{archive.plate_no}} | {{archive.party_name}} | 查看文书 删除 |
{% endfor %}
```
接着在templates文件夹新建add.html,复制以下代码:
```
新增交通档案
新增交通执法档案
```
三、初始化数据库
打开命令提示符,依次执行以下命令,每输入一行按一次回车:
```
cd D:\traffic_archive
python
from app import db
db.create_all()
exit()
```
以上步骤没有报错即完成数据库初始化,不会生成额外文件,自动在项目目录生成数据库文件。
四、启动使用与日常操作
4.1 启动系统
在命令提示符的D:\traffic_archive目录下,输入以下命令启动系统:
```
python app.py
```
启动后打开任意浏览器,输入地址http://127.0.0.1:5000即可进入系统。
4.2 日常操作流程
- 新增档案:点击首页「新增档案」按钮,按要求填写所有信息。如果上传了扫描件,将扫描件放入
D:\traffic_archive\static\uploads目录,路径填写为static/uploads/你的文件名.jpg即可。
- 检索档案:在首页搜索框输入车牌号或者档案编号,点击搜索即可一键找到对应档案,点击「查看文书」可以打开扫描件。
- 删除档案:点击对应档案的删除按钮,确认后即可删除错误录入的档案。
五、多用户公网部署(可选)
如果需要单位多电脑同时使用,将整个项目上传到CentOS 7云服务器,执行以下命令即可启动:
```
pip install gunicorn
gunicorn -b 0.0.0.0:5000 app:app -D
```
开放服务器5000端口后,通过服务器公网IP即可访问,原有数据和档案会完整保留。