大一零基础自学 Flask

0 阅读3分钟

大一零基础自学 Flask,两个月肝了一个全栈博客系统,求大佬轻喷

背景

大一,之前完全没接触过编程,纯靠 B 站 + 官方文档 + 微软教程自学。

print("Hello World") 到能跑起来一个完整的全栈项目,踩了无数坑,也熬了不少夜。

今天把项目开源出来,一是做个记录,二是真心求大佬们 code review,知道自己哪里写得烂,才能进步。

GitHub:github.com/elysianx138…


项目做了什么

一个用 Flask 搭建的个人博客系统,主要功能:

  • 用户系统:注册、登录、权限控制(普通用户 / 管理员)
  • 文章系统:CRUD、Markdown 渲染、双向链接([[标题]] 语法)、文章分级(私密 / 仅浏览 / 完全公开)
  • 批注系统:完全公开的文章支持多人批注
  • 聊天室:登录用户实时聊天
  • 文件管理:上传、下载、白名单校验
  • 其他:暗黑模式切换、草稿自动保存、阅读量统计、管理员公告

技术栈: Flask + SQLite + 原生 HTML/CSS/JS

屏幕截图 2026-04-05 212016.png

屏幕截图 2026-04-05 212034.png

屏幕截图 2026-04-05 212152.png

屏幕截图 2026-04-05 212256.png

项目结构

personal_blog/
├── app.py              # 主入口
├── extensions.py       # Flask 扩展
├── init_db.py          # 数据库初始化
├── routes/             # 蓝图模块
│   ├── user.py        # 用户
│   ├── articles.py    # 文章
│   ├── chat.py        # 聊天室
│   ├── admin.py       # 管理
│   ├── api.py         # API
│   └── main.py        # 首页
├── models/             # 数据模型
├── utils/              # 工具函数
├── static/             # CSS/JS
└── templates/          # HTML 模板

最难的几个坑

1. CSRF 保护

一开始完全不知道 CSRF 是什么,后来查资料才知道 POST 请求需要 token 验证。自己手搓了一个 session 级别的 CSRF(也有AI成分),但 API 路由暂时跳过了检查,这里肯定有问题,求大佬指点怎么改

2. 双向链接

想实现类似 Obsidian 的 [[标题]] 语法,用正则匹配文章里的引用,然后存成 JSON 关联。实现是能实现,但感觉性能很差,文章多了肯定卡。

3. 数据库设计

用的裸 SQL,没上 ORM(在让AI检查前不知道这个东西)。一开始觉得简单,后来发现每次查数据都要手动构造对象,代码重复很多。下一步打算学 SQLAlchemy,但不知道迁移成本高不高


感觉不足

求轻喷:

  • 数据库名 questions.db 和项目语义不匹配(一开始练手随便起的,后来懒得改了)
  • User 模型只有 7 行,纯手动 class,没和数据库联动
  • 没有单元测试
  • 没有错误处理和日志
  • 文件上传没做大小限制
  • 聊天室发消息没加登录校验(已发现,准备修)
  • 环境变量加载顺序有 bug(secret_keyload_dotenv() 之前赋值)
  • Flask蓝图后,测试了一下,感觉一些功能有点影响

下一步计划

  1. 用 SQLAlchemy 重构数据库层
  2. 加上单元测试和日志
  3. 修复已知的安全问题
  4. 学 Spring Boot,用 Java 重写一遍这个项目
  5. 接入 LangChain,给博客加 AI 功能(自动摘要、智能搜索、问答助手)

求指点

  1. 这个项目作为学习成果,在就业市场上算什么水平
  2. 从 Flask 转 Spring Boot,学习路线该怎么规划
  3. 代码里还有哪些我没意识到的安全问题
  4. 有没有大佬愿意帮忙 code review?任何建议都感激不尽!
  5. 这个项目还有值得改进的地方吗?或者是否有走偏的?

最后

知道自己写得烂,但这是纯自学的第一步。

如果有同样在自学的朋友,欢迎一起交流,互相 review 代码。

如果觉得项目还行,GitHub 给个 star 就是最大的鼓励