0x01前言

终于开始动手写博客了,基本上是参考着狼书做的,来回看了好几遍收获良多,递进式的实现了大部分功能。

Github:https://github.com/birdmanwings/bdwms_blog

0x02基本功能

整个博客基本分为前台展示模块,登录模块,后台管理模块。

前台页面:

导航栏包括主页和关于页面,左侧为文章目录包含标题,归属目录,评论数,概览,下方为页数。右侧为边栏包括,链接栏,目录,切换主题,其中切换主题可选为白色或者黑色。底栏包括小的导航栏和登录按钮。

登录模块

一个比较简单的登录模块,管理员账户后台生成。

后台管理模块:

img

为了方便与前台用的统一模板,右上角增加管理按钮,New可以新建文章,链接,目录,Manage可以管理编辑删除文章,链接,目录,评论,Setting设置管理员信息包括标题,管理员名称,关于页面,右下角有登出按钮。

对于文章页面:

img

有分享按钮,生成链接,还有评论区支持回复功能,非管理员的评论需要先审核。

评论区:img

评论可以填写姓名,网址(可选),邮箱,评论正文。当被评论者收到评论时,根据所填的邮箱会收到提醒邮件。

管理员也会收到新评论的提醒。

0x03程序架构

img

blueprints为蓝图分别为前台响应,登录,后台管理。static放置静态文件。templates为前台,登录,后台,基模板。init.py为初始化函数,使用工厂模式;email.py支持异步多线程发送邮件;extensions.py为拓展模块的实例化,将初始化放在init.py中;forms.py为表单;models.py为数据库模型;settings.py为设置;utils.py为辅助函数包括回退,验证链接,限制上传文件。.env文件中配置管理员邮箱等敏感信息,.flaskenv设置FLASK_APP,FLASK_ENV。

程序后端基于Flask以及各种插件,前段为Bootstrap和jquery,采用janja2模板引擎,后端渲染前端页面。

0x04未来实现

  1. 后端渲染前段没有做到前后端分离,很麻烦,考虑未来用基于Restful风格的API重构。
  2. 部署上线,考虑使用docker
  3. 前端页面比较简单,考虑优化,未来可能会学习vue
  4. tmd感觉python真的不适合写Web后端,考虑学习GO,B站都开源了Orz