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

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

作者: 码途有道 | 来源:发表于2020-04-29 15:17 被阅读0次

    背景

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

    • 博主主要从事 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 站主也找了一个官方文档和几个翻译文档,感觉也算良好(当时想的太简单:joy:)

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

    个站功能梳理

    验证模块

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

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

    主模块

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

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

    文章模块

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

    个人中心模块

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

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

    使用 Flask 的开发个站的感受

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

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

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

    附上两张站主的Flask项目结构图(新手所作,如有不妥之处,欢迎指正)

    目录结构1.jpg
    目录结构2.jpg

    小建议

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

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

    相关文章

      网友评论

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

          本文链接:https://www.haomeiwen.com/subject/fltnwhtx.html