# Python知疑社区 **Repository Path**: chuerFeng/python-doubt-community ## Basic Information - **Project Name**: Python知疑社区 - **Description**: 知疑社区 - **Primary Language**: Python - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-05-27 - **Last Updated**: 2025-06-15 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 知疑 - 社区问答论坛 一个基于Flask和Bootstrap的社区问答论坛系统,用户可以在这里提问、回答问题、点赞内容,以及按标签浏览问题。 ## 项目概述 知疑是一个模仿知乎风格的问答社区,使用Flask框架开发,具有完整的用户系统和问答功能。项目使用了现代化的UI设计,响应式布局,适合作为Flask学习和教学示例。 ## 功能特点 ### 用户系统 - 用户注册和登录 - 个人资料管理(头像上传、个人简介编辑) - 用户认证和授权 ### 问答功能 - 发布问题(支持富文本编辑) - 回答问题 - 对回答进行点赞 - 按标签分类浏览 ### 搜索和发现 - 问题搜索功能 - 热门问题推荐 - 标签云和标签分类 ## 技术栈 - **前端**:HTML, CSS, JavaScript, Bootstrap 5 - **后端**:Python Flask - **数据库**:MySQL (SQLAlchemy ORM) ## 项目结构 ``` 知疑/ # 项目根目录 ├── app/ # 应用主目录 │ ├── controllers/ # 控制器/路由 │ │ ├── auth.py # 认证相关控制器 │ │ ├── errors.py # 错误处理控制器 │ │ ├── main.py # 主页面控制器 │ │ ├── question.py # 问题相关控制器 │ │ └── user.py # 用户相关控制器 │ ├── forms/ # 表单定义 │ ├── models/ # 数据模型 │ │ ├── answer.py # 回答模型 │ │ ├── question.py # 问题和问题标签模型 │ │ ├── tag.py # 标签模型 │ │ └── user.py # 用户模型 │ ├── static/ # 静态文件(CSS, JS, 图像) │ ├── templates/ # HTML模板 │ ├── utils.py # 工具类 │ ├── commands.py # 自定义CLI命令 │ ├── config.py # 应用配置文件 │ └── __init__.py # 应用初始化 ├── data/ # 数据相关文件 │ ├── create_database.sql # 数据库创建脚本 │ └── seed_data.sql # 测试数据填充脚本 ├── logs/ # 日志文件 ├── .gitignore # Git忽略文件 ├── app.py # 应用入口点 ├── requirements.txt # 依赖项 └── README.md # 项目说明 ``` ## 安装与运行 ### 前提条件 - Python 3.7+ - MySQL 8.0+ ### 安装步骤 1. 克隆仓库(或下载ZIP包) 2. 创建虚拟环境并激活 ```bash python -m venv .venv venv\Scripts\activate # Windows source venv/bin/activate # macOS/Linux ``` 3. 安装依赖 ```bash pip install -r requirements.txt ``` 4. 创建并初始化数据库 ```bash # 创建数据库和表结构 flask init-db # 填充测试数据 flask seed-data ``` 5. 运行应用 ```bash # 直接运行 python app.py # 或使用Flask命令 flask run ``` 6. 访问 http://127.0.0.1:5000 使用应用 ## 自定义命令 项目提供了以下自定义Flask命令: ```bash # 初始化数据库表结构 flask init-db # 填充测试数据 flask seed-data # 创建管理员用户 flask create-admin ``` ## 测试账号 初始化数据库后,可使用以下测试账号登录: - 管理员:admin@example.com / adminpassword - 用户1:user1@example.com / password1 - 用户2:user2@example.com / password2 ## 核心组件说明 ### 模块组织 - **controllers/** - 包含所有路由和视图函数 - **main.py** - 首页、标签页和搜索功能 - **auth.py** - 用户认证相关功能 - **question.py** - 问题的CRUD操作和回答功能 - **user.py** - 用户资料管理 - **errors.py** - 错误处理(404、403、500等) - **models/** - 数据库模型定义 - **user.py** - 用户模型及相关方法 - **question.py** - 问题模型及问题标签关联 - **answer.py** - 回答模型及点赞功能 - **tag.py** - 标签模型 ### 工具类 (utils.py) 包含多个工具类,使代码更加模块化和可维护: - **SecurityUtil** - 安全相关工具(密码哈希、令牌生成) - **AuthUtil** - 认证相关工具(登录验证、所有权验证) - **FileUtil** - 文件处理(上传头像等) - **StringUtil** - 字符串处理(文本截断、HTML过滤) - **DateUtil** - 日期处理(格式化、人性化时间显示) - **LogUtil** - 日志记录(不同级别日志) - **DataUtil** - 数据处理(分页、搜索、标签过滤) ### 数据库脚本 - **create_database.sql** - 创建数据库结构 - 检查并创建数据库 - 创建所有表结构和关系 - **seed_data.sql** - 填充测试数据 - 创建测试用户、标签、问题和回答 - 设置初始点赞数据 ## 开发与部署 ### 开发模式 默认情况下,应用以开发模式运行,提供: - 自动重载功能 - 详细错误页面 - 调试器支持 ### 日志系统 应用包含完整的日志系统: - 日志文件位于`logs/zhiyi.log` - 自动记录关键操作和错误 - 使用`LogUtil`类可在代码中方便地添加日志 ## 许可证 MIT