# pythonpps **Repository Path**: whh200403/pythonpps ## Basic Information - **Project Name**: pythonpps - **Description**: 知了python论坛 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2025-04-01 - **Last Updated**: 2026-02-24 ## Categories & Tags **Categories**: Uncategorized **Tags**: Python, Flask ## README # Python BBS 论坛系统 ## 📋 项目介绍 这是一个简单的基于 Flask 框架的 Python 论坛系统,包含前台论坛功能和后台管理系统。支持用户注册登录、发帖评论、权限管理等完整的论坛功能。 ## ✨ 主要功能 ### 前台功能 - 📝 用户注册/登录(邮箱验证码注册) - 👤 个人资料编辑(头像、签名、用户名) - 📄 发布帖子(支持富文本编辑和图片上传) - 💬 评论帖子 - 🔍 按板块筛选帖子 - 📖 帖子浏览(带阅读计数) - 📄 分页显示 ### 后台管理功能 - 👥 员工管理(添加/编辑员工,分配角色) - 🔐 基于 RBAC 的权限控制系统 - 👨‍👩‍👧‍👦 前台用户管理(查看/禁用用户) - 📋 帖子管理(查看/隐藏帖子) - 💭 评论管理(查看/禁用评论) - 🏷️ 板块管理(编辑/禁用板块) ## 🛠️ 技术栈 ### 后端技术 - **框架**: Flask 2.2.5 - **数据库**: MySQL (使用 SQLAlchemy ORM) - **缓存**: Redis - **邮件服务**: Flask-Mail - **表单验证**: WTForms - **数据库迁移**: Flask-Migrate (Alembic) - **异步任务**: Celery (可选) - **安全**: Flask-WTF (CSRF 保护)、Werkzeug (密码加密) ### 前端技术 - Bootstrap 4 - jQuery - wangEditor (富文本编辑器) - SweetAlert (弹窗提示) ## 📦 项目结构 ``` pythonpps/ ├── app.py # 应用入口文件 ├── config.py # 配置文件(开发/生产环境) ├── exts.py # Flask 扩展初始化 ├── hooks.py # 请求钩子和错误处理 ├── decorators.py # 自定义装饰器(登录验证、权限验证) ├── commands.py # Flask CLI 命令 ├── filters.py # 模板过滤器 ├── requirements.txt # 项目依赖 ├── blueprints/ # 蓝图目录 │ ├── front.py # 前台蓝图 │ ├── cms.py # 后台管理蓝图 │ ├── user.py # 用户蓝图 │ └── media.py # 媒体文件蓝图 ├── models/ # 数据模型 │ ├── user.py # 用户、角色、权限模型 │ └── post.py # 板块、帖子、评论模型 ├── forms/ # 表单验证 │ ├── user.py # 用户相关表单 │ ├── post.py # 帖子相关表单 │ └── cms.py # 后台管理表单 ├── templates/ # 模板文件 │ ├── front/ # 前台模板 │ ├── cms/ # 后台模板 │ └── errors/ # 错误页面 ├── static/ # 静态资源 │ ├── front/ # 前台样式和脚本 │ ├── cms/ # 后台样式和脚本 │ └── common/ # 公共资源 ├── media/ # 上传文件目录 │ └── avatars/ # 用户头像 └── utils/ # 工具函数 └── restful.py # RESTful API 响应封装 ``` ## 🔐 权限系统 ### 权限类型 - `BOARD` - 板块管理权限 - `POST` - 帖子管理权限 - `COMMENT` - 评论管理权限 - `FRONT_USER` - 前台用户管理权限 - `CMS_USER` - 后台用户管理权限 ### 预设角色 - **稽查**: 拥有帖子和评论管理权限 - **运营**: 拥有帖子、评论、板块、前台用户管理权限 - **管理员**: 拥有所有权限 ## 🚀 快速开始 ### 1. 环境要求 - Python 3.9+ - MySQL 5.7+ - Redis 5.0+ ### 2. 安装依赖 ```bash # 克隆项目 git clone cd pythonpps # 安装依赖包 pip install -r requirements.txt ``` ### 3. 配置文件 修改 `config.py` 中的配置: ```python # 数据库配置 SQLALCHEMY_DATABASE_URI = "mysql+pymysql://用户名:密码@地址:端口/数据库名?charset=utf8mb4" # Redis 配置 CACHE_REDIS_HOST = "Redis地址" CACHE_REDIS_PORT = "6379" CACHE_REDIS_PASSWORD = "Redis密码" # 邮箱配置 MAIL_SERVER = "smtp.163.com" MAIL_USERNAME = "你的邮箱" MAIL_PASSWORD = "邮箱授权码" MAIL_DEFAULT_SENDER = "你的邮箱" ``` ### 4. 初始化数据库 ```bash # 初始化 Flask-Migrate 迁移环境 flask db init # 生成迁移脚本 flask db migrate # 执行数据库迁移 flask db upgrade ``` ### 5. 创建初始数据 ```bash # 创建权限数据 flask create-permission # 创建角色数据 flask create-role # 添加测试用户(密码:111111) flask create-test-front # 添加管理员 flask create-admin --username admin --email admin@163.com --password 111111 # 添加板块 flask create_board # 添加测试帖子(可选) flask create-test-post ``` ### 6. 运行项目 ```bash # 开发模式运行 flask run # 或使用 Python 直接运行 python app.py ``` 访问 `http://127.0.0.1:5000` 即可查看项目 ## 📖 使用说明 ### 前台用户 1. **注册账号** - 访问注册页面 - 输入邮箱,点击"发送验证码"(60秒倒计时防重复点击) - 填写验证码、用户名、密码 - 点击"立即注册" 2. **登录系统** - 输入注册的邮箱和密码 - 可勾选"记住我"保持登录状态 3. **发布帖子** - 登录后点击"发帖"按钮 - 选择板块,填写标题和内容 - 支持富文本编辑和图片上传 - 点击"发布" 4. **评论帖子** - 进入帖子详情页 - 在底部评论框输入内容 - 点击"发表评论" 5. **个人资料** - 点击用户名进入个人主页 - 可修改头像、用户名、个性签名 ### 后台管理 1. **访问后台** - 使用管理员账号登录 - 访问 `/cms` 进入后台管理系统 2. **员工管理** - 添加员工:输入已注册用户的邮箱,分配角色 - 编辑员工:修改员工角色或取消员工权限 3. **用户管理** - 查看所有前台用户 - 禁用/启用用户账号 4. **内容管理** - 管理帖子:查看所有帖子,隐藏不合规内容 - 管理评论:查看所有评论,禁用违规评论 - 管理板块:编辑板块名称,禁用/启用板块 ## 🔧 CLI 命令说明 ```bash # 权限和角色 flask create-permission # 创建权限数据 flask create-role # 创建角色数据 # 用户管理 flask create-test-front # 创建测试用户(张三、李四、王五) flask create-admin -u <用户名> -e <邮箱> -p <密码> # 创建管理员 # 内容管理 flask create_board # 创建默认板块 flask create-test-post # 生成测试帖子(98条) ``` ## 📝 注意事项 1. **邮箱配置**:需要使用邮箱授权码,不是邮箱登录密码 2. **Redis 配置**:确保 Redis 服务正常运行 3. **文件上传**:需要创建 `media/avatars/` 目录 4. **数据库编码**:建议使用 `utf8mb4` 编码以支持 emoji 5. **密码安全**:生产环境请修改 `SECRET_KEY` ## 🐛 常见问题 ### 1. 数据库连接失败 - 检查 MySQL 服务是否启动 - 确认数据库用户名、密码、地址是否正确 - 确保数据库已创建 ### 2. 验证码发送失败 - 检查邮箱配置是否正确 - 确认使用的是授权码而非密码 - 检查网络连接 ### 3. Redis 连接失败 - 检查 Redis 服务是否启动 - 确认 Redis 地址、端口、密码是否正确 ### 4. 图片上传失败 - 检查 `media/` 和 `media/avatars/` 目录是否存在 - 确认目录有写入权限