背景
在开始介绍博客搭建之前,先介绍下站主的开发背景
- 博主主要从事 Android 开发,目前5年开发经验
- 同时熟悉小程序开发和涉及一些前端开发(主要是 vue 相关项目)
- Python 为站主从去年9月开始自学,用于公司内部使用的爬虫开发和简单的接口开发
- 因为疫情期间,延迟复工,萌生一个使用 Python 开发个人博客网站的想法
几个问题
为什么不使用 WorldPress 或者 Hexo 这些成熟的个站模板来开发个人博客?
站主的目的主要了解和学习整个Web开发从前端到后端的完整开发流程。作为一个前端开发,了解和学习后端以及数据库相关技术,可以更有效的提升自己,加强自己对整个项目的理解。
WorldPress 和 Hexo 这些模板使用虽然简单,但是非常依赖第三方,比如评论功能,就是集成的第三方,如果想要自己对其做些修改定制,就比较困难。当然,如果你只是关注最后的成果而不是过程,那么 WorldPress 和 Hexo 是绝不会让你失望的。
为什么不用 Django 而是 Flask?
在 python web 开发中,Django 可以说是老大哥了,始终占据龙头地位。但是 Flask 也不差,一直热度高涨,提倡微服务概念,更加灵活。当然,对于站主这么一个刚接触 python web 的新人来说,其实都差不多。那么只能根据站主自己的感觉来选择了:
之前使用过 flask 开发过爬虫接口,相对于 django,对于 flask 站主要更加熟悉一点
flask 比 django 晚出生5年,借鉴了 django 的经验,但是距离目前也有10年的历史,不是萌新,站主当时觉得可能更符合目前的技术潮流(要学就学最新的,当前前提是稳定有发展),并且 django 的开发者也说 flask 是他们最开始想要的样子
github 上的star数量,flask 要比 django 多一些(但是两者还是在同一数量级上的),对于站主这种不了解的新人来说,这也是一个选择标准
然后最后一点,框架文档是否齐全,当时查询时,django 的文档是非常齐全的,并且社区活跃。flask 站主也找了一个官方文档和几个翻译文档,感觉也算良好(当时想的太简单:joy:)
综上,基于对新技术的看好,站主选择了 flask
个站功能梳理
验证模块
因为并不是想简单的做个静态网页展示,想有更多的人参与,所以必须提供一个增加用户的入口,即注册/登录
- 登录: 通过用户名或者手邮箱登录
- 注册: 填写用户名和邮箱进行注册(不使用手机号是因为,发送验证短信需要小钱钱:joy:,而邮箱每天有一定数量的免费邮件),用户角色分三种:普通用户、有写作权限的用户以及管理员
- 忘记密码: 用户忘记密码后,通过注册邮箱重置密码
主模块
主模块是整个个站的入口,同时负责跳转至其他模块
- 文章展示: 根据指定规则(如发布时间倒序)来展示文章列表,支持分页
- 侧边栏展示: 如文章分类、文章标签等
- 关于: 关于站主和个站的描述,并且支持编辑(非静态)
文章模块
- 文章详情展示: 展示文章内容
- 文章评论: 提供用户评论,支持二级评论,需登录用户才可评论(很多个站都支持游客评论,但是考虑到新站没有流量,并且防止游客随意填写评论内容,初期开放游客评论)
- 文章点赞: 用户点赞的文章,可以在个人中心中查看
- 文章编辑: 支持文章在线创建和编辑(使用markdown)
个人中心模块
因为只是个个人博客网站,和用户交互不会太多,个站的最主要目的是记录和分享文章,重点在于文章编辑和展示,个人中心中简单设计即可。
- 设置:用户可在此页编辑个人信息,如头像、用户名等
- 我的私密文章: 用户在创建文章时,如果文章还处于草稿状态或者不方便对外公开,可选择私密保存,不对外公开,在此页可查询用户自己的私密文章
- 收到的赞: 作者可在此处查看自己被点赞的文章
- 收到的评论: 作者可在此处查看自己收到评论
- 你的赞: 作者可在此处查看自己点赞的文章
- 你的评论: 作者可在此处查看自己评论的文章
使用 Flask 的开发个站的感受
尽管在开发之前,已经做了一些调研,但是在实际开发中,还是遇到了许多问题。当然,这肯定是必然的,遇到问题能解决即可。但是这其中最大的问题是 flask 相关扩展的文档问题。
flask 相关扩展的文档碎片化太严重(之前只关注了 flask 本身的文档,其扩展未关注),flask 本身只是提供了一个服务器功能,类似于发送邮件使用的 flask-mail 扩展等都需要自己额外集成。先不说这些扩展的质量如何,就这些扩展的使用文档有的也不是很全,对于站主这种新手来说,使用时仍然有疑问。
开发整个搏站,从疫情延迟复工开始,到复工后正式上班,靠着每天下班后抽出点时间编写,总计一个月多点时间,算是比较拖沓的了。目前站主正在使用 django 重构本站项目。因为有之前 flask 的开发经验在,所以转 django 开发可以说比一开始从零开始时要容易很多,里面很多设计理念也都很相似。并且 django 因为高度集成的原因,各种规范和架构都已经规定好(站主本人在入手新技术时,最想看的就是规范),对于新手来说应该比较友好!
附上两张站主的Flask项目结构图(新手所作,如有不妥之处,欢迎指正)
小建议
如果有新人也想使用 flask 或者 django 试水搏站,并且有时间的话,个人建议可以先从 flask 开始,后使用 django 重构。因为如果直接上 django,作为新手,也许会对里面的东西产生很多疑惑。就如同搭积木,如果直接给你一个搭好的模型,再拆开后(逆向过程),让你指出每块积木的作用,你可能会有疑惑。但是让你亲自一步步去搭好后(正向过程),再去拆解模型,你对每块积木的都会有不错的了解。
flask 开发就像是这个正向过程(自己一步一步去集成想要的扩展,完善网站),django 开发就像是逆向过程(django已经帮你集成了许多常用的扩展,你要做的就是去学习这些扩展的使用)。走正向对新手的帮助会比逆向要大的多。当然,如果是一个没有太多时间的新手的话,就直接上 django 吧,能最大程度的保证你的项目质量。