基于 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 删除分类

相关推荐
weixin_468466851 小时前
Cherry-Studio 新手极速上手指南
人工智能·python·深度学习·ai·自然语言处理·大模型
2501_940041741 小时前
从跑酷到实时联机:5个能直接用的Web游戏开发需求
前端
用户298698530141 小时前
Java 开发中读取与解析 Word 文档的实践记录
java·后端
RANxy1 小时前
零基础全栈 React 入门(三):状态管理与事件处理
前端
AskHarries1 小时前
如何判断市场是否拥挤
后端
Csvn1 小时前
前端调试技巧
前端
右耳朵猫AI1 小时前
React技术周刊 2026年第20周
前端·react.js·前端框架
问心无愧05131 小时前
ctf show web入门58
前端·笔记
AwakeFantasy1 小时前
聊聊近况和最近做的踩坑项目
人工智能·python·gpt·ocr