一、前期准备
环境安装
首先安装Python环境,官方下载地址:https://www.python.org/downloads/,安装时必须勾选「Add Python to PATH」选项,否则后续终端无法识别Python命令。安装完成后打开终端(Windows按Win+R输入cmd回车,Mac直接打开终端),执行以下命令安装依赖,可直接复制执行:
```
pip install flask flask-sqlalchemy
```
项目目录创建
在本地任意位置创建名为school_archive的项目文件夹,在该文件夹内再创建两个子文件夹:一个名为templates,另一个名为uploads,uploads必须是手动创建的空文件夹,不然后续上传文件会直接报错,这是新手最容易遗漏的步骤。最终目录结构为:
- school_archive/(项目根目录)
- ├─ uploads/(存放上传的档案文件)
- ├─ templates/(存放前端页面)
- └─ app.py(后端服务文件,后续创建)
二、核心代码编写
后端服务代码
在项目根目录新建名为app.py的文件,将以下完整代码复制进去,不需要修改任何内容可直接使用:
```
from flask import Flask, render_template, request, redirect, send_from_directory
from flask_sqlalchemy import SQLAlchemy
import os
from datetime import datetime
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///school_archive.db'
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
app.config['UPLOAD_FOLDER'] = os.path.join(os.path.abspath(os.path.dirname(__file__)), 'uploads')
db = SQLAlchemy(app)
class Archive(db.Model):
id = db.Column(db.Integer, primary_key=True)
student_name = db.Column(db.String(50), nullable=False)
student_id = db.Column(db.String(20), unique=True, nullable=False)
class_name = db.Column(db.String(50), nullable=False)
archive_type = db.Column(db.String(20), nullable=False)
upload_time = db.Column(db.DateTime, default=datetime.now)
file_path = db.Column(db.String(200), nullable=False)
@app.route('/')
def archive_list():
archives = Archive.query.order_by(Archive.upload_time.desc()).all()
return render_template('index.html', archives=archives)
@app.route('/add', methods=['POST'])
def add_archive():
student_name = request.form.get('student_name')
student_id = request.form.get('student_id')
class_name = request.form.get('class_name')
archive_type = request.form.get('archive_type')
file = request.files['archive_file']
if file:
filename = f"{student_id}_{int(datetime.now().timestamp())}_{file.filename}"
file.save(os.path.join(app.config['UPLOAD_FOLDER'], filename))
new_archive = Archive(
student_name=student_name,
student_id=student_id,
class_name=class_name,
archive_type=archive_type,
file_path=filename
)
db.session.add(new_archive)
db.session.commit()
return redirect('/')
@app.route('/download/
')
def download_archive(archive_id):
archive = Archive.query.get_or_404(archive_id)
return send_from_directory(app.config['UPLOAD_FOLDER'], archive.file_path, as_attachment=True)
@app.route('/delete/')
def delete_archive(archive_id):
archive = Archive.query.get_or_404(archive_id)
os.remove(os.path.join(app.config['UPLOAD_FOLDER'], archive.file_path))
db.session.delete(archive)
db.session.commit()
return redirect('/')
if __name__ == '__main__':
app.run(debug=True)
```
前端页面代码

在templates文件夹内新建名为index.html的文件,复制以下完整代码,自带基础样式,可直接使用:
```
学校档案管理系统
学校档案管理系统
档案列表
| 姓名 |
学号 |
班级 |
档案类型 |
上传时间 |
操作 |
{% for archive in archives %}
| {{ archive.student_name }} |
{{ archive.student_id }} |
{{ archive.class_name }} |
{{ archive.archive_type }} |
{{ archive.upload_time.strftime('%Y-%m-%d %H:%M') }} |
下载
删除
|
{% endfor %}
```
三、初始化数据库
这一步必须执行,否则系统无法存储档案数据,操作步骤如下:
- 打开终端,cd进入项目根目录
- 输入
python回车,进入Python交互环境
- 依次输入以下两行命令,执行完成无报错说明成功:
```
from app import db
db.create_all()
```
- 输入
exit()回车,退出交互环境
执行完成后,项目根目录会自动生成school_archive.db数据库文件,说明初始化成功。
四、启动运行与验证
在终端的项目根目录下,执行以下命令启动服务:
```
python app.py
```
启动成功后,打开浏览器,输入地址http://127.0.0.1:5000即可进入系统,可按以下步骤验证功能:
- 填写新增档案表单,上传测试文件,提交后查看档案是否出现在列表中
- 点击下载按钮,验证是否能正常获取档案文件
- 点击删除按钮,验证是否能彻底删除档案记录和对应文件
以上三个功能都正常,说明系统已经搭建完成,可以投入使用。如果需要多设备访问,可按以下步骤免费部署:
五、公开访问部署(可选)
如果需要学校内部多用户访问,可免费部署到PythonAnywhere,步骤如下:
- 打开官网注册免费账号:
https://www.pythonanywhere.com/
- 将本地所有项目文件上传到PythonAnywhere的文件管理中
- 打开Bash控制台,执行
pip install flask flask-sqlalchemy安装依赖
- 进入Web配置,添加Flask项目,指定项目路径和app对象,重启服务即可通过分配的域名访问
免费版可满足百人以内的日常档案管理需求,不需要额外购买服务器。本系统代码可直接扩展,可根据需求增加登录验证、档案搜索、分类筛选等功能。