Python初学者使用Flask搭建一个个人博客的体验与感受

背景

在开始介绍博客搭建之前,先介绍下站主的开发背景

  • 博主主要从事 Android 开发,目前5年开发经验
  • 同时熟悉小程序开发和涉及一些前端开发(主要是 vue 相关项目)
  • Python 为站主从去年9月开始自学,用于公司内部使用的爬虫开发和简单的接口开发
  • 因为疫情期间,延迟复工,萌生一个使用 Python 开发个人博客网站的想法

几个问题

为什么不使用 WorldPress 或者 Hexo 这些成熟的个站模板来开发个人博客?

  1. 站主的目的主要了解和学习整个Web开发从前端到后端的完整开发流程。作为一个前端开发,了解和学习后端以及数据库相关技术,可以更有效的提升自己,加强自己对整个项目的理解。

  2. WorldPress 和 Hexo 这些模板使用虽然简单,但是非常依赖第三方,比如评论功能,就是集成的第三方,如果想要自己对其做些修改定制,就比较困难。当然,如果你只是关注最后的成果而不是过程,那么 WorldPress 和 Hexo 是绝不会让你失望的。

为什么不用 Django 而是 Flask?

在 python web 开发中,Django 可以说是老大哥了,始终占据龙头地位。但是 Flask 也不差,一直热度高涨,提倡微服务概念,更加灵活。当然,对于站主这么一个刚接触 python web 的新人来说,其实都差不多。那么只能根据站主自己的感觉来选择了:

  1. 之前使用过 flask 开发过爬虫接口,相对于 django,对于 flask 站主要更加熟悉一点

  2. flask 比 django 晚出生5年,借鉴了 django 的经验,但是距离目前也有10年的历史,不是萌新,站主当时觉得可能更符合目前的技术潮流(要学就学最新的,当前前提是稳定有发展),并且 django 的开发者也说 flask 是他们最开始想要的样子

  3. github 上的star数量,flask 要比 django 多一些(但是两者还是在同一数量级上的),对于站主这种不了解的新人来说,这也是一个选择标准

  4. 然后最后一点,框架文档是否齐全,当时查询时,django 的文档是非常齐全的,并且社区活跃。flask 站主也找了一个官方文档和几个翻译文档,感觉也算良好(当时想的太简单)

综上,基于对新技术的看好,站主选择了 flask

个站功能梳理

验证模块

因为并不是想简单的做个静态网页展示,想有更多的人参与,所以必须提供一个增加用户的入口,即注册/登录

  • 登录: 通过用户名或者手邮箱登录
  • 注册: 填写用户名和邮箱进行注册(不使用手机号是因为,发送验证短信需要小钱钱,而邮箱每天有一定数量的免费邮件),用户角色分三种:普通用户、有写作权限的用户以及管理员
  • 忘记密码: 用户忘记密码后,通过注册邮箱重置密码

主模块

主模块是整个个站的入口,同时负责跳转至其他模块

  • 文章展示: 根据指定规则(如发布时间倒序)来展示文章列表,支持分页
  • 侧边栏展示: 如文章分类、文章标签等
  • 关于: 关于站主和个站的描述,并且支持编辑(非静态)

文章模块

  • 文章详情展示: 展示文章内容
  • 文章评论: 提供用户评论,支持二级评论,需登录用户才可评论(很多个站都支持游客评论,但是考虑到新站没有流量,并且防止游客随意填写评论内容,初期开放游客评论)
  • 文章点赞: 用户点赞的文章,可以在个人中心中查看
  • 文章编辑: 支持文章在线创建和编辑(使用markdown)

个人中心模块

因为只是个个人博客网站,和用户交互不会太多,个站的最主要目的是记录和分享文章,重点在于文章编辑和展示,个人中心中简单设计即可。

  • 设置: 用户可在此页编辑个人信息,如头像、用户名等
  • 我的私密文章: 用户在创建文章时,如果文章还处于草稿状态或者不方便对外公开,可选择私密保存,不对外公开,在此页可查询用户自己的私密文章
  • 收到的赞: 作者可在此处查看自己被点赞的文章
  • 收到的评论: 作者可在此处查看自己收到评论
  • 你的赞: 作者可在此处查看自己点赞的文章
  • 你的评论: 作者可在此处查看自己评论的文章

使用 Flask 的开发个站的感受

尽管在开发之前,已经做了一些调研,但是在实际开发中,还是遇到了许多问题。当然,这肯定是必然的,遇到问题能解决即可。但是这其中最大的问题是 flask 相关扩展的文档问题。

flask 相关扩展的文档碎片化太严重(之前只关注了 flask 本身的文档,其扩展未关注),flask 本身只是提供了一个服务器功能,类似于发送邮件使用的 flask-mail 扩展等都需要自己额外集成。先不说这些扩展的质量如何,就这些扩展的使用文档有的也不是很全,对于站主这种新手来说,使用时仍然有疑问。

开发整个搏站,从疫情延迟复工开始,到复工后正式上班,靠着每天下班后抽出点时间编写,总计一个月多点时间,算是比较拖沓的了。目前站主正在使用 django 重构本站项目。因为有之前 flask 的开发经验在,所以转 django 开发可以说比一开始从零开始时要容易很多,里面很多设计理念也都很相似。并且 django 因为高度集成的原因,各种规范和架构都已经规定好(站主本人在入手新技术时,最想看的就是规范),对于新手来说应该比较友好!

附上两张站主的Flask项目结构图(新手所作,如有不妥之处,欢迎指正)
Python初学者使用Flask搭建一个个人博客的体验与感受_第1张图片

Python初学者使用Flask搭建一个个人博客的体验与感受_第2张图片

小建议

如果有新人也想使用 flask 或者 django 试水搏站,并且有时间的话,个人建议可以先从 flask 开始,后使用 django 重构。因为如果直接上 django,作为新手,也许会对里面的东西产生很多疑惑。就如同搭积木,如果直接给你一个搭好的模型,再拆开后(逆向过程),让你指出每块积木的作用,你可能会有疑惑。但是让你亲自一步步去搭好后(正向过程),再去拆解模型,你对每块积木的都会有不错的了解。

flask 开发就像是这个正向过程(自己一步一步去集成想要的扩展,完善网站),django 开发就像是逆向过程(django已经帮你集成了许多常用的扩展,你要做的就是去学习这些扩展的使用)。走正向对新手的帮助会比逆向要大的多。当然,如果是一个没有太多时间的新手的话,就直接上 django 吧,能最大程度的保证你的项目质量。

你可能感兴趣的:(Python)