Skip to content

n2119394720/blog

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 

Repository files navigation

📝 个人博客系统

一个基于 Flask 开发的现代化个人博客系统,支持 Markdown、评论系统、文章分类等功能。

Python Flask License

✨ 功能特性

🎯 核心功能

  • 文章管理:创建、编辑、删除文章,支持 Markdown 格式
  • 评论系统:游客和管理员都可以发表评论和回复
  • 文章分类:自定义分类管理,方便文章归类
  • 标签系统:为文章添加多个标签,便于检索
  • 搜索功能:支持按标题和内容搜索文章

👤 用户系统

  • 管理员登录:安全的用户认证机制
  • 个人信息管理:可修改用户名、邮箱、密码和个人简介
  • 评论信箱:查看所有评论,带未读消息提醒

📧 通知系统

  • 邮件通知:评论回复自动发送邮件通知(需配置 SMTP)
  • 站内通知:未读评论数量实时显示
  • Toast 提示:美观的操作反馈提示

🎨 界面特色

  • 响应式设计:适配桌面和移动设备
  • Markdown 实时预览:写作时即时看到渲染效果
  • 渐变主题:优雅的紫色渐变设计风格
  • 评论折叠:超过3条回复自动折叠,保持页面整洁

💡 用户体验

  • 首页侧边栏:个人简介和文章分类快速访问
  • 锚点定位:点击评论直接跳转到对应位置
  • 管理员便捷操作:评论/回复无需重复填写信息
  • 灵活的信息编辑:基本信息修改无需密码验证

🛠️ 技术栈

后端

  • Flask 3.0 - Web 框架
  • Flask-SQLAlchemy 3.1 - ORM 数据库操作
  • Flask-Login 0.6 - 用户会话管理
  • Flask-Mail 0.9 - 邮件发送
  • Werkzeug - 密码哈希和安全工具

前端

  • Jinja2 - 模板引擎
  • marked.js - Markdown 实时渲染
  • CSS3 - 渐变、动画、响应式布局

数据库

  • SQLite - 轻量级数据库(可替换为 MySQL/PostgreSQL)

📦 安装与运行

前置要求

  • Python 3.12+
  • pip 包管理器

安装步骤

  1. 克隆项目
git clone <your-repository-url>
cd blog
  1. 创建虚拟环境
python -m venv .venv
source .venv/bin/activate  # Linux/Mac
#
.venv\Scripts\activate     # Windows
  1. 安装依赖
pip install -r requirements.txt
  1. 配置邮件(可选)

编辑 app.py 文件,修改邮件配置:

app.config['MAIL_SERVER'] = 'smtp.qq.com'
app.config['MAIL_PORT'] = 587
app.config['MAIL_USE_TLS'] = True
app.config['MAIL_USERNAME'] = 'your_email@qq.com'  # 你的邮箱
app.config['MAIL_PASSWORD'] = 'your_smtp_password'  # SMTP授权码
app.config['MAIL_DEFAULT_SENDER'] = 'your_email@qq.com'
  1. 运行应用
python app.py
  1. 访问博客

打开浏览器访问:http://127.0.0.1:5000

默认管理员账户

  • 用户名:admin
  • 密码:admin123

⚠️ 重要:首次登录后请立即修改密码!

📁 项目结构

blog/
├── app.py                      # 主应用文件(路由、模型、配置)
├── requirements.txt            # Python 依赖包
├── instance/
│   └── blog.db                # SQLite 数据库文件
├── templates/                  # HTML 模板
│   ├── base.html              # 基础模板
│   ├── index.html             # 首页
│   ├── post.html              # 文章详情页
│   ├── login.html             # 登录页
│   ├── new_post.html          # 新建文章
│   ├── edit_post.html         # 编辑文章
│   ├── profile.html           # 个人中心
│   ├── edit_profile.html      # 编辑个人信息
│   ├── inbox.html             # 评论信箱
│   ├── categories.html        # 分类管理
│   └── comment_item.html      # 评论项模板
└── static/                     # 静态资源(可选)

🎯 使用指南

写文章

  1. 登录管理员账户
  2. 点击导航栏"写文章"
  3. 填写标题、选择分类、添加标签
  4. 使用 Markdown 编写内容(支持实时预览)
  5. 点击"发布文章"

管理分类

  1. 点击导航栏"分类管理"
  2. 创建新分类(名称 + 描述)
  3. 可以删除空分类(有文章的分类无法删除)
  4. 写文章时选择已有分类

查看评论

  1. 登录后点击"个人中心"
  2. 点击"📬 评论信箱"查看未读评论
  3. 点击"👁️ 查看评论"直接跳转到评论位置

编辑个人信息

  1. 进入"个人中心"
  2. 点击"✏️ 编辑个人信息"
  3. 基本信息:可直接修改,无需密码
  4. 修改密码:需要验证当前密码

🔧 配置说明

数据库配置

默认使用 SQLite,如需使用其他数据库:

# MySQL
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://user:password@localhost/blog'

# PostgreSQL
app.config['SQLALCHEMY_DATABASE_URI'] = 'postgresql://user:password@localhost/blog'

密钥配置

修改 app.py 中的 SECRET_KEY:

app.config['SECRET_KEY'] = 'your-secret-key-change-this-in-production'

🚀 部署建议

生产环境

  • 使用 Gunicorn 或 uWSGI 作为 WSGI 服务器
  • 使用 Nginx 作为反向代理
  • 启用 HTTPS
  • 使用 PostgreSQL 或 MySQL 替代 SQLite
  • 配置环境变量存储敏感信息

示例 Gunicorn 启动命令

gunicorn -w 4 -b 0.0.0.0:8000 app:app

📝 API 路由

公开路由

  • GET / - 首页
  • GET /post/<id> - 文章详情
  • GET /category/<id> - 分类文章列表
  • POST /post/<id>/comment - 发表评论

管理员路由

  • GET /login - 登录
  • GET /logout - 登出
  • GET /admin/new - 新建文章
  • GET /admin/edit/<id> - 编辑文章
  • POST /admin/delete/<id> - 删除文章
  • GET /admin/profile - 个人中心
  • GET /admin/profile/edit - 编辑个人信息
  • POST /admin/profile/update_basic - 更新基本信息
  • POST /admin/profile/change_password - 修改密码
  • GET /admin/inbox - 评论信箱
  • POST /admin/comment/delete/<id> - 删除评论
  • GET /admin/categories - 分类管理
  • POST /admin/category/new - 创建分类
  • POST /admin/category/delete/<id> - 删除分类

🐛 常见问题

1. 数据库错误

如果遇到 no such column 错误,删除 instance/blog.db 后重启应用。

2. 邮件发送失败

  • 检查 SMTP 配置是否正确
  • 确认邮箱已开启 SMTP 服务
  • 使用邮箱授权码而非登录密码

3. Markdown 不渲染

确保文章内容包含有效的 Markdown 语法。

📄 许可证

MIT License

🤝 贡献

欢迎提交 Issue 和 Pull Request!

📮 联系方式

如有问题或建议,请通过以下方式联系:

  • 提交 GitHub Issue

Made with ❤️ using Flask

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors