一、环境搭建与依赖安装
在开始构建档案管理系统的培训地点管理模块之前,我们需要准备一个干净且高效的开发环境。为了保证零门槛上手,本指南采用Python作为后端语言,配合轻量级的Flask框架和SQLite数据库。你无需配置复杂的MySQL或Oracle环境即可直接运行。
请在你的电脑上创建一个项目文件夹,例如命名为archive_training_system。打开终端(Windows下为CMD或PowerShell,Mac下为Terminal),切换到该目录下,执行以下命令创建虚拟环境并安装核心依赖:
```bash
创建虚拟环境(隔离项目依赖)
python -m venv venv
激活虚拟环境
Windows系统执行:
venv\Scripts\activate
Mac/Linux系统执行:
source venv/bin/activate
安装Flask框架及数据库ORM工具
pip install flask flask-sqlalchemy
```
注意:请确保你的Python版本在3.8及以上,以避免兼容性问题。安装完成后,项目目录下会生成venv文件夹,这表明环境隔离成功。
二、数据库模型设计与初始化
培训地点管理模块的核心在于数据的存储。我们需要设计一张表来存储地点的详细信息,包括地点名称、详细地址、最大容纳人数以及配备的设备情况。我们将使用SQLAlchemy进行ORM(对象关系映射)操作,这样可以直接用Python代码操作数据库,无需手写SQL语句。
在项目根目录下创建一个名为app.py的文件,并输入以下代码。这部分代码包含了数据库的连接配置以及TrainingLocation数据模型的定义:
```python
from flask import Flask, render_template, request, jsonify
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)
配置SQLite数据库路径,数据库文件会自动生成在当前目录下
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///archive.db'
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
db = SQLAlchemy(app)
定义培训地点数据模型
class TrainingLocation(db.Model):
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(100), nullable=False) 地点名称,如“第一会议室”
address = db.Column(db.String(200), nullable=False) 详细地址
capacity = db.Column(db.Integer, nullable=False) 最大容纳人数
equipment = db.Column(db.String(500), nullable=True) 配备设备,如“投影仪、白板”
将数据转换为字典格式,方便后续返回JSON给前端
def to_dict(self):
return {
'id': self.id,
'name': self.name,
'address': self.address,
'capacity': self.capacity,
'equipment': self.equipment
}
在应用启动前初始化数据库表结构
with app.app_context():
db.create_all()
```
代码解析:上述代码定义了TrainingLocation类,映射到数据库中的training_location表。db.create_all()会检查数据库是否存在对应的表,如果不存在则自动创建,这是零基础落地的关键一步。
三、后端核心逻辑实现
接下来,我们需要在app.py中补充具体的业务逻辑接口。我们需要实现三个核心功能:获取地点列表、新增培训地点以及删除地点。请继续在app.py文件中追加以下代码:
```python
1. 首页路由,返回前端页面
@app.route('/')
def index():
return render_template('index.html')
2. 获取所有培训地点的API接口
@app.route('/api/locations', methods=['GET'])
def get_locations():
locations = TrainingLocation.query.all()
将查询到的对象列表转换为字典列表
return jsonify([loc.to_dict() for loc in locations])
3. 新增培训地点的API接口
@app.route('/api/locations', methods=['POST'])
def add_location():
data = request.json
简单的后端校验
if not data or not data.get('name') or not data.get('capacity'):
return jsonify({'error': '地点名称和容纳人数不能为空'}), 400
try:
new_location = TrainingLocation(
name=data['name'],
address=data.get('address', ''),
capacity=int(data['capacity']),
equipment=data.get('equipment', '')
)
db.session.add(new_location)
db.session.commit()
return jsonify(new_location.to_dict()), 201
except Exception as e:
return jsonify({'error': str(e)}), 500
4. 删除培训地点的API接口
@app.route('/api/locations/
', methods=['DELETE'])
def delete_location(location_id):
location = TrainingLocation.query.get(location_id)
if location:
db.session.delete(location)
db.session.commit()
return jsonify({'message': '删除成功'})
return jsonify({'error': '地点未找到'}), 404
if __name__ == '__main__':
app.run(debug=True)
```
实操细节:这里使用了Flask的jsonify方法来处理数据交互,确保前后端通过JSON格式通信。特别是在add_location函数中,我们加入了基础的异常捕获,防止因数据类型错误(例如将字母填入人数栏)导致程序崩溃。
四、前端页面与交互逻辑

后端接口已经准备就绪,现在需要构建前端界面。在项目根目录下创建一个名为templates的文件夹,并在其中新建index.html文件。我们将使用原生HTML、CSS和JavaScript来实现一个简洁的增删改查界面,无需安装Vue或React即可运行。
请在templates/index.html中填入以下完整代码:
```html
档案管理系统-培训地点管理
```
前端解析:这段代码使用了Fetch API来与后端进行异步通信。当用户点击“提交保存”时,addLocation函数会收集输入框的数据,打包成JSON对象发送给后端的POST接口。操作成功后,会自动调用fetchLocations刷新表格,无需手动刷新页面。
五、运行与功能验证
所有代码已经编写完毕,现在可以进行最后的运行测试。请确保你的终端仍然处于虚拟环境激活状态,并且位于项目根目录下。
执行以下命令启动Flask开发服务器:
```bash
python app.py
```
当终端出现Running on http://127.0.0.1:5000字样时,说明服务启动成功。此时,打开你的浏览器(Chrome、Edge等),在地址栏输入http://127.0.0.1:5000。
验证步骤:
- 新增测试:在页面表单中填写“名称:培训中心大讲堂”、“地址:主楼1层”、“人数:100”、“设备:多媒体大屏”,点击提交。你应该会看到下方表格立即新增了一行数据。
- 校验测试:尝试清空“名称”或“人数”再次提交,系统应不会添加数据,且后端会拦截请求。
- 删除测试:点击表格行右侧的红色“删除”按钮,确认弹窗后,该行数据应即时消失。
- 持久化测试:关闭终端(停止程序),然后重新运行
python app.py。刷新浏览器页面,刚才添加的数据依然存在,证明SQLite数据库已成功保存数据。
至此,一个完整的、基于Web的档案管理系统培训地点管理模块已经开发完成。这套方案代码结构清晰,依赖极简,非常适合作为企业内部档案管理系统的原型或基础模块进行扩展。