技术选型与架构设计
- 后端技术:Python + Flask/Django(RESTful API 设计)
- 数据库:MySQL/PostgreSQL(关系型数据存储)或 MongoDB(非结构化数据)
- 微信小程序:WXML/WXSS + JavaScript,使用微信开发者工具
- 部署方案:Nginx + Gunicorn(Python 后端),云服务器(如阿里云/腾讯云)
核心功能模块
- 用户权限管理:区分管理员、教师、学生角色,基于 JWT 实现身份验证
- 选题发布与审核:教师提交选题,管理员审核,学生查看可选列表
- 双向选择机制:学生提交志愿,教师确认最终匹配结果
- 数据统计与导出:可视化图表(PyECharts),Excel 导出(openpyxl 库)
关键代码示例(Flask 后端)
@app.route('/api/topic', methods=['POST'])
@jwt_required()
def create_topic():
data = request.get_json()
if current_user.role != 'teacher':
return jsonify({"error": "Permission denied"}), 403
new_topic = Topic(title=data['title'], teacher_id=current_user.id)
db.session.add(new_topic)
db.session.commit()
return jsonify({"id": new_topic.id}), 201
微信小程序端实现要点
- 页面结构:
pages/index(首页)、pages/topic-list(选题列表)、pages/selection(志愿填报)
- 数据交互:封装
wx.request 调用后端 API,统一处理错误响应
- UI 组件库:使用 Vant Weapp 或 WeUI 加速开发
数据安全与优化
- 敏感操作:接口级权限校验(Flask-Principal)
- 防 SQL 注入:ORM 参数化查询(SQLAlchemy)
- 性能优化:Redis 缓存热门选题数据,分页查询(LIMIT/OFFSET)