基于 Python + Flask + Vue 的校内求职互助平台

基于 Python 3.9 + Flask + Vue 3 的校内求职互助平台,面向高校学生提供求职互助、内推机会、面经分享、在线简历、私信沟通等功能,支持用户端与管理端双端操作。


目录


功能概览

功能
用户端 登录注册、互助广场(帖子列表/详情/发帖)、评论互动、在线简历、私信、个人中心
管理端 数据看板(统计卡片 + 可视化图表)、用户管理、帖子管理、分类管理、公告管理

技术栈

层级 技术 说明
后端 Python 3.9 运行环境
Flask 2.3 Web 框架
SQLAlchemy 3.1 ORM
Flask-JWT-Extended JWT 认证
Flask-CORS 跨域支持
PyMySQL MySQL 驱动
前端 Vue 3 框架
Vue Router 4 路由
Vuex 4 状态管理
Element Plus UI 组件库
Axios HTTP 客户端
ECharts 数据可视化
数据库 MySQL 5.7+ 持久化存储
运行环境 Node.js 16+ 前端构建

项目结构

复制代码
c71/
├── database/                    # 数据库相关
│   ├── init.sql                 # 建库建表脚本(含初始分类)
│   ├── generate_seed.py         # 生成测试数据脚本
│   └── seed_data.sql            # 测试数据(需先执行 generate_seed 生成)
│
├── backend/                     # Flask 后端
│   ├── run.py                   # 启动入口(支持 python run.py seed 生成 seed_data)
│   ├── requirements.txt         # Python 依赖
│   ├── uploads/                 # 上传文件目录(头像等)
│   └── app/
│       ├── __init__.py          # 应用工厂、蓝图注册
│       ├── config.py            # 配置(数据库、JWT、上传等)
│       ├── extensions.py        # 扩展初始化(db、jwt、cors)
│       ├── models/              # 数据模型
│       │   ├── user.py          # 用户
│       │   ├── post.py          # 帖子
│       │   ├── comment.py       # 评论
│       │   ├── category.py      # 分类
│       │   ├── resume.py        # 简历
│       │   ├── message.py       # 私信
│       │   └── notice.py        # 公告
│       ├── routes/              # API 路由
│       │   ├── auth.py          # 认证(注册、登录、个人信息)
│       │   ├── post.py          # 帖子
│       │   ├── comment.py       # 评论
│       │   ├── notice.py        # 公告
│       │   ├── user.py          # 用户相关(个人资料等)
│       │   ├── resume.py        # 简历
│       │   ├── message.py       # 私信
│       │   └── admin.py         # 管理端(统计、用户/帖子/分类/公告管理)
│       └── utils/               # 工具
│           ├── response.py      # 统一响应格式
│           ├── jwt_helper.py    # JWT 辅助
│           └── decorators.py    # 权限装饰器
│
└── frontend/                    # Vue 前端
    ├── package.json
    ├── vue.config.js            # 开发代理(/api -> 5000, /uploads -> 5000)
    └── src/
        ├── main.js
        ├── App.vue
        ├── api/                 # 接口封装
        │   ├── index.js         # Axios 实例、拦截器
        │   ├── auth.js
        │   ├── post.js
        │   ├── resume.js
        │   ├── message.js
        │   └── admin.js
        ├── router/index.js      # 路由与导航守卫
        ├── store/index.js       # Vuex 状态
        ├── components/          # 公共组件
        ├── views/
        │   ├── Login.vue        # 登录/注册页
        │   ├── user/            # 用户端页面
        │   │   ├── Layout.vue
        │   │   ├── Home.vue
        │   │   ├── PostList.vue
        │   │   ├── PostDetail.vue
        │   │   ├── CreatePost.vue
        │   │   ├── Resume.vue
        │   │   ├── Message.vue
        │   │   └── Profile.vue
        │   └── admin/           # 管理端页面
        │       ├── Layout.vue
        │       ├── Dashboard.vue  # 数据看板(含 ECharts 图表)
        │       ├── UserManage.vue
        │       ├── PostManage.vue
        │       └── NoticeManage.vue
        └── assets/             # 静态资源

环境要求

  • Python 3.9+

  • Node.js 16+

  • MySQL 5.7+(或 MariaDB 10.2+)

  • npmyarn


快速开始

1. 克隆项目

复制代码
git clone <repository-url>
cd c71

2. 数据库初始化

在 MySQL 中执行建库建表脚本:

复制代码
mysql -u root -p < database/init.sql

或在 MySQL 命令行中:

复制代码
source /path/to/database/init.sql

脚本会创建数据库 job_platform、8 张表(用户、帖子、评论、分类、简历、私信、公告),并插入 8 个初始职位分类。

3. (可选)导入测试数据

如需快速体验,可先启动后端一次(让管理员自动创建),再生成并导入测试数据:

复制代码
# 生成 seed_data.sql
cd backend && python run.py seed
​
# 导入数据库(需先 cd 回项目根目录)
mysql -u root -p --default-character-set=utf8mb4 job_platform < database/seed_data.sql

若在 MySQL 内用 source 导入,需先执行 SET NAMES utf8mb4;source database/seed_data.sql

测试数据包含:10 个普通用户(密码均为 123456)、12 篇帖子、12 条评论、6 条私信、5 份简历、3 条公告。

4. 后端启动

复制代码
cd backend
pip install -r requirements.txt

修改 app/config.py 中的数据库连接信息(见下方 配置说明),然后:

复制代码
python run.py

后端默认运行在 http://localhost:5000。首次启动会自动创建管理员账号(admin / admin123)。

5. 前端启动

复制代码
cd frontend
npm install
npm run serve

前端默认运行在 http://localhost:8080,开发环境已配置代理到后端。访问 http://localhost:8080 即可使用。


配置说明

后端配置 backend/app/config.py

配置项 说明 默认值
MYSQL_HOST MySQL 主机 localhost
MYSQL_PORT MySQL 端口 3306
MYSQL_USER 数据库用户名 root
MYSQL_PASSWORD 数据库密码 root
MYSQL_DB 数据库名 job_platform
SECRET_KEY Flask 密钥 job-platform-secret-2026
JWT_SECRET_KEY JWT 密钥 jwt-job-platform-2026
JWT_ACCESS_TOKEN_EXPIRES Token 有效期 7d
ALLOWED_EXTENSIONS 图片上传格式 png, jpg, jpeg, gif, webp
MAX_CONTENT_LENGTH 单文件最大 5MB 5MB

前端代理 frontend/vue.config.js

开发时 /api/uploads 会代理到 http://localhost:5000,无需修改后端端口即可联调。


默认账号

角色 用户名 密码 说明
管理员 admin admin123 首次启动时自动创建
普通用户 zhangsan、lisi、wangwu 等 123456 仅在使用 seed_data 导入后存在

功能模块详解

用户端

模块 路径 功能
登录注册 /login 登录、注册,支持 Tab 切换
首页 /user/home 互助广场入口、公告展示
帖子列表 /user/posts 按分类/类型筛选、分页
帖子详情 /user/posts/:id 查看、评论、回复
发帖 /user/posts/create 选择类型(求职互助/内推机会/面经分享)、填写标题、内容、可选公司/职位等
在线简历 /user/resume 编辑个人简历、在线预览
私信 /user/messages 收发私信、未读提醒
个人中心 /user/profile 修改昵称、头像、联系方式、毕业信息、修改密码

管理端

模块 路径 功能
数据看板 /admin/dashboard 统计卡片、近 7 天趋势折线图、帖子类型环形图、分类发帖柱状图、最新帖子/用户列表
用户管理 /admin/users 用户列表、搜索、启用/禁用、删除
帖子管理 /admin/posts 帖子列表、搜索、删除
公告管理 /admin/notices 公告列表、新增、删除

API 接口概览

模块 方法 路径 说明
认证 POST /api/auth/register 注册
POST /api/auth/login 登录
GET /api/auth/profile 获取个人信息
PUT /api/auth/profile 更新个人信息
POST /api/auth/avatar 上传头像
帖子 GET /api/posts 帖子列表、分页
GET /api/posts/:id 帖子详情
POST /api/posts 发帖
DELETE /api/posts/:id 删除帖子(仅管理员)
评论 GET /api/posts/:id/comments 评论列表
POST /api/posts/:id/comments 发表评论
公告 GET /api/notices 公告列表
POST /api/notices 发布公告(管理员)
DELETE /api/notices/:id 删除公告(管理员)
简历 GET /api/resume 获取简历
PUT /api/resume 更新简历
私信 GET /api/messages 收发私信、未读数
POST /api/messages 发送私信
管理 GET /api/admin/stats 统计与图表数据
GET /api/admin/users 用户列表
PUT /api/admin/users/:id/status 启用/禁用用户
DELETE /api/admin/users/:id 删除用户
GET /api/admin/posts 帖子列表
DELETE /api/admin/posts/:id 删除帖子
GET /api/admin/categories 分类列表
POST /api/admin/categories 新增分类
DELETE /api/admin/categories/:id 删除分类

相关推荐
上进小菜猪6 小时前
把 KES 集群交给 Kubernetes 的九十天:一个 DBA 的试用实录
后端
两点王爷7 小时前
PostgreSQL 常用 SQL 语句与 GIS 相关函数详解
数据库·后端
麻雀飞吧7 小时前
先判断工具用来学习、开发还是执行
人工智能·python
泯泷7 小时前
那段文字是谁删的?Yjs 14 正式版之前,一套删除归属方案的实现与边界
前端·javascript·算法
考虑考虑7 小时前
Springboot环境变量占位符语法
spring boot·后端·spring
人邮异步社区7 小时前
学习Python的最佳学习路径是什么?
python·程序员
步行cgn9 小时前
Spring 基于 XML 的自动装配:byName 详解
java·后端·spring
野槐9 小时前
前端项目优化(有了我,会发生...)
前端
troy12810 小时前
Python 基础语法(九):Django/Flask/FastAPI 三大 Web 框架详细对比解析
python·jupyter·django·flask·github·fastapi
jzshmyt10 小时前
我用 Python 从零“生成“了一个宇宙,然后让它观察自己(v14)
人工智能·pytorch·python·numpy·matplotlib·空间计算·scipy