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