网站首页/ 信息中心/ 档案百科/

基于Python快速实现物业档案培训报名系统

发布时间:2026年08月31日 14:15:21 浏览量:0

一、开发环境准备与依赖安装

在开始编写代码之前,需要确保本地计算机已经安装了Python环境。本系统基于Python 3.8及以上版本开发,使用轻量级Web框架Flask作为后端,SQLite作为数据库,无需额外配置数据库服务器即可运行。

打开终端或命令提示符,执行以下命令安装核心依赖库:

pip install flask openpyxl

依赖说明:

二、项目目录结构规划

为了保持代码逻辑清晰,请在本地创建一个名为property_training_sys的文件夹,并在内部按照以下结构创建文件和目录:

在终端中进入项目根目录,执行以下命令创建空文件夹:

mkdir templates static

三、数据库设计与初始化

我们将使用SQLite数据库存储报名信息。数据库文件名为training.db,其中包含一张名为registrations的表。该表设计包含以下字段:id(主键)、name(姓名)、company(物业公司名称)、department(部门)、position(职位)、phone(联系电话)、course_type(培训课程类型)、create_time(报名时间)。

app.py中写入以下代码,用于自动检测并初始化数据库:


import sqlite3
from flask import g
DATABASE = 'training.db'
def get_db():
db = getattr(g, '_database', None)
if db is None:
db = g._database = sqlite3.connect(DATABASE)
db.row_factory = sqlite3.Row
return db
def init_db():
with app.app_context():
db = get_db()
db.execute('''
CREATE TABLE IF NOT EXISTS registrations (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT NOT NULL,
company TEXT NOT NULL,
department TEXT,
position TEXT,
phone TEXT NOT NULL,
course_type TEXT NOT NULL,
create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP
)
''')
db.commit()

四、后端核心逻辑开发

打开app.py,编写完整的后端逻辑。我们需要实现四个主要功能:显示报名页面、处理报名提交、显示后台管理列表、导出Excel数据。

以下是完整的app.py代码:


from flask import Flask, render_template, request, redirect, url_for, flash, send_file, make_response
import sqlite3
from openpyxl import Workbook
from datetime import datetime
import io
app = Flask(__name__)
app.secret_key = 'your_secret_key_here'   用于Flash消息
DATABASE = 'training.db'
def get_db():
db = getattr(g, '_database', None)
if db is None:
db = g._database = sqlite3.connect(DATABASE)
db.row_factory = sqlite3.Row
return db
@app.teardown_appcontext
def close_connection(exception):
db = getattr(g, '_database', None)
if db is not None:
db.close()
def init_db():
with app.app_context():
db = get_db()
db.execute('''
CREATE TABLE IF NOT EXISTS registrations (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT NOT NULL,
company TEXT NOT NULL,
department TEXT,
position TEXT,
phone TEXT NOT NULL,
course_type TEXT NOT NULL,
create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP
)
''')
db.commit()
首页:报名表单
@app.route('/')
def index():
return render_template('index.html')
处理报名提交
@app.route('/submit', methods=['POST'])
def submit():
name = request.form.get('name')
company = request.form.get('company')
department = request.form.get('department')
position = request.form.get('position')
phone = request.form.get('phone')
course_type = request.form.get('course_type')
if not name or not company or not phone or not course_type:
flash('请填写所有必填项(姓名、公司、电话、课程类型)', 'error')
return redirect(url_for('index'))
db = get_db()
try:
db.execute('INSERT INTO registrations (name, company, department, position, phone, course_type) VALUES (?, ?, ?, ?, ?, ?)',
(name, company, department, position, phone, course_type))
db.commit()
flash('报名成功!请等待培训通知。', 'success')
except Exception as e:
flash('报名失败,请重试。', 'error')
return redirect(url_for('index'))
后台管理页面
@app.route('/admin')
def admin():
db = get_db()
cursor = db.execute('SELECT  FROM registrations ORDER BY create_time DESC')
data = cursor.fetchall()
return render_template('admin.html', registrations=data)
导出Excel功能
@app.route('/export')
def export():
db = get_db()
cursor = db.execute('SELECT name, company, department, position, phone, course_type, create_time FROM registrations ORDER BY create_time DESC')
data = cursor.fetchall()
wb = Workbook()
ws = wb.active
ws.title = "培训报名表"
写入表头
headers = ['姓名', '物业公司', '部门', '职位', '联系电话', '课程类型', '报名时间']
ws.append(headers)
写入数据
for row in data:
ws.append([row['name'], row['company'], row['department'], row['position'], row['phone'], row['course_type'], row['create_time']])
保存到内存流
output = io.BytesIO()
wb.save(output)
output.seek(0)
response = make_response(send_file(output, mimetype='application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'))
response.headers["Content-Disposition"] = "attachment; filename=training_export.xlsx"
return response
if __name__ == '__main__':
init_db()
app.run(debug=True, port=5000)

注意:请确保在代码顶部添加from flask import g,并在app.py开头引入所有必要的库。上述代码中包含了数据校验、数据库插入以及Excel文件流的生成逻辑,可以直接复制使用。

五、前端页面开发

基于Python快速实现物业档案培训报名系统

前端页面使用Bootstrap 5进行快速布局,确保界面美观且兼容移动端。我们需要创建两个HTML文件:index.htmladmin.html

1. 前台报名页面 (templates/index.html)

此页面包含一个报名表单,用于收集员工信息。请将以下代码写入templates/index.html







物业档案培训报名



物业管理行业档案培训报名

{% with messages = get_flashed_messages(with_categories=true) %} {% if messages %} {% for category, message in messages %}
{{ message }}
{% endfor %} {% endif %} {% endwith %}

2. 后台管理页面 (templates/admin.html)

此页面用于展示所有报名人员列表,并提供导出按钮。请将以下代码写入templates/admin.html







报名管理后台



培训报名名单

导出Excel
{% for reg in registrations %} {% else %} {% endfor %}
ID 姓名 公司 部门 职位 电话 课程 报名时间
{{ reg.id }} {{ reg.name }} {{ reg.company }} {{ reg.department }} {{ reg.position }} {{ reg.phone }} {{ reg.course_type }} {{ reg.create_time }}
暂无报名数据

六、系统运行与测试

所有代码文件准备就绪后,即可启动系统进行测试。

1. 启动服务

在终端中确保位于项目根目录下,执行以下命令启动Flask开发服务器:

python app.py

终端将显示服务运行在 http://127.0.0.1:5000

2. 访问报名页面

打开浏览器,访问 http://127.0.0.1:5000。你将看到物业档案培训报名表单。尝试填写信息,姓名公司电话课程类型为必填项,若留空提交,页面会提示错误信息。填写完整后提交,页面应显示“报名成功”提示。

3. 管理数据与导出

提交数据后,在浏览器地址栏输入 http://127.0.0.1:5000/admin 访问后台管理页面。你将看到刚才提交的数据列表显示在表格中。点击右上角的绿色“导出Excel”按钮,浏览器将下载一个名为training_export.xlsx的文件。打开该文件,确认其中的数据格式正确,包含表头和所有提交的报名详情。

至此,一个完整的、包含数据录入、存储、展示和导出功能的物业管理行业档案培训报名系统已完全落地。该系统可以直接部署在内网服务器或通过公网映射供物业员工使用。

档案管理软件公司哪家便宜?过来人亲测高性价比选择指南
档案管理软件公司哪家便宜?过来人亲测高性价比选择指南
家人们谁懂啊,去年我帮公司选档案管理软件,抱着电脑搜了三天“档案管理软件公司哪家便宜”,踩了仨大坑,差点把我年终奖金整没了。今天把我踩坑攒的干货全掏出来,帮你省时间省money还不背锅,咱打工人就是要...
2026年08月31日 14:15:21
柳州档案管理系统:踩过坑的过来人都私藏的档案神器
柳州档案管理系统:踩过坑的过来人都私藏的档案神器
哎,各位兄弟姊妹、行政老铁、职场打工人,我跟你们掏心窝子说啊——当初我为了找个靠谱的档案管理系统,那真的是蹲过柳州政务中心的走廊,翻了17份不同的系统测评,踩过的坑能绕我家小区柳石路的健身器材三圈,最...
2026年08月31日 14:15:21
<p>档案软件审计日志不完整?别慌,老司机带你填坑!</p>

档案软件审计日志不完整?别慌,老司机带你填坑!

档案软件审计日志不完整?别慌,老司机带你填坑! 一、审计日志“缺斤少两”?这可不是小事! 哎,兄弟/集美,最近是不是被档案软件那审计日志搞得头大?就是那种,关键时刻想查个“谁在什么时候动了啥”,结...
2026年08月31日 14:15:21
找对档案制度建设部门 少走三年档案合规冤枉路
找对档案制度建设部门 少走三年档案合规冤枉路
说真的兄弟,我前两年真的被公司那堆乱成麻的档案坑得差点递辞职报告,头发都掉了一大把,才实打实明白:找对档案制度建设部门,真的能少走三年冤枉路。我这过来人踩过的坑、攒的干货,今天全给你们唠明白,绝对没半...
2026年08月31日 14:15:21
微信咨询
电话联系
QQ客服
微信咨询一对一服务
服务热线: 028-8744 4417
QQ客服: 2305721818