python/flask 实践:HocLog个人博客系统

举报
GGN_2015 发表于 2023/11/09 18:37:10 2023/11/09
【摘要】 尝试使用华为云 CodeArts 管理敏捷项目。

HocLog个人博客系统

1. 项目概述

本项目使用华为云 DevCloud 平台进行软件项目的一站式开发、管理,使用华为 ECS 弹性云服务器部署软件系统,旨在提供一个简单易用的博客网站:HocLog个人博客,访客可以轻松地浏览博客文章,用户通过密码登录后可以进行新增、删除、编辑博客,修改密码,上传图片等功能。

本项目的目标是为访客提供一个高效、可靠、易用的博客网站,使访客能够方便地阅读自己感兴趣的文章。为了实现这个目标,我们将提供以下功能:

  • 访客可以在网站上浏览公开的博客文章。
  • 用户通过密码和 cookie 进行身份验证登录。
  • 网站提供公开博客和隐私博客。
  • 网站会记录每篇博客的访问量。
  • 网站提供 Markdown 编辑功能,用户可以使用 Markdown 语法来编辑和格式化他们的文本。
  • 网站提供图床服务,允许上传图片并在博客等场合使用。请注意,每张图片的大小不能超过 12 MB。
  • 网站提供标签分类功能,让访客可以按照标签分类查看博客。
  • 网站提供博客归档功能,让访客可以按照时间轴查看博客。

本项目将采用 Python3-Flask、HTML、CSS 和 JavaScript 等技术来实现。为了保证系统的可靠性、性能和安全性,我们将遵循以下设计原则:

  • 遵循 RESTful 架构原则,使系统具有清晰的接口和良好的可扩展性。
  • 使用数据库来存储博客数据,保证数据的完整性和可靠性。
  • 使用缓存技术来提高系统的性能,减少对数据库的访问次数。
  • 使用密码哈希技术来保护用户密码的安全性。
  • 使用 HTTPS 协议来保护用户的数据传输安全。
  • 对用户提交的数据进行严格的输入验证和输出过滤,以防止 SQL 注入、跨站脚本攻击等安全问题。

通过以上的设计,我们将为访客提供一个安全、可靠、高效、易用的博客网站,让访客可以在这里尽情地阅读自己感兴趣的文章,从而打造一个真正意义上的个人博客平台。同时,由于不存在管理员用户概念,只有凭据登入条件,因此可以保证访客的个人信息和数据的私密性和安全性。

2. 软件项目开发过程

image.png

2.1 项目管理

2.1.1 规划

  • (1) 主页

主页是博客网站的入口页面,需要展示博客的主题、特色和最新内容,同时也要提供必要的法律声明和技术支持信息,以及方便访客检索博客内容的功能。通过精心的设计和优化,可以提高网站的吸引力和用户体验,吸引更多的访客和读者。主要包括以下内容:

  1. 主页标题和主页背景图:主页标题是博客网站的名称,可以直观地表达博客主题和定位。主页背景图可以用来吸引访客注意,也可以展示博客主题和特色。

  2. 所有博客的标题、摘要、创建时间和最后编辑时间:这些内容可以让访客快速了解博客的主要内容和更新情况,方便访客进行选择和浏览。

  3. 备案号、Powered By Hua Wei 云、版权:这些内容是网站必备的法律声明和技术支持信息,可以让访客了解博客的合法性和可信度,也可以增加网站的专业性和权威性。

  4. 按标签检索:这个功能可以让访客根据自己的兴趣和需求,快速地找到相关的博客内容,提高网站的用户体验和访问量。

  • (2) 博客详情页面

博客详情页面展示了一篇文章的详细信息。该页面包括文章的标题和内容,以及该文章的访问量、创建时间和修改时间等元数据。

在博客详情页面中,文章的标题和内容是最重要的部分,它们展示了文章的主题和内容,为读者提供了阅读和理解文章的基础。

除此之外,博客详情页面中的访问量、创建时间和修改时间等元数据也非常重要。访问量可以反映文章的受欢迎程度,创建时间和修改时间则可以让读者了解文章的发布时间和更新历史,帮助他们了解文章的时效性和可信度。

最后需要注意的是,博客详情页面的内容受版权保护,如果您想要转载或者使用该文章的部分内容,需要遵守相应的版权规定。例如,该页面可能会标注 CC BY SA 4.0 的授权信息,表示该文章采用了创作共用署名-相同方式共享4.0国际许可协议,具体使用方式需要遵守该协议的条款。

  • (3) 登录页面

登录页面是一个网站或应用程序中的重要页面之一,通常用于管理者登录以获得特定的权限。在博客网站中,管理员需要通过密码登录以获得发布、编辑文章、上传图片等管理权限,这些权限通常是普通访客所没有的。

登录页面只包括一个密码的输入框,管理员需要输入正确密码才能成功登录。

  • (4) 博客编辑页面

编辑页面是博客网站中用于编辑和管理文章的页面之一。每篇博客文章都有自己的编辑页面,其中包括一系列用于编辑和管理文章的工具和选项。

编辑页面包括一个文本框,用于输入或编辑文章的正文内容。此外,编辑页面还包括一些常用的选项,例如保存、重置到修改前、编辑标题、编辑标签、删除(软删除)以及编辑摘要等选项,以便管理员对文章内容进行修改和调整。

在编辑页面中,博客文章内容支持 Markdown 语法,这使得文章的排版和格式更加美观和规范。管理员还可以在文章中插入代码、数学公式、图片等内容,以便更好地展示和说明文章内容。

此外,博客文章还具有一些属性,例如标题、ID、创建时间、访客可见性、是否已删除、上次修改时间、标签、文章内容、文章摘要和访问量等。这些属性可以帮助管理者更好地管理和了解文章的相关信息,以便进行更好的管理和推广。

需要注意的是,编辑页面中的删除选项通常是软删除,即文章不会立即从网站上删除,而是被标记为已删除,并在网站的后台进行管理。这样可以避免一些不必要的误删操作,并保留文章的历史记录,以便管理者可以在需要时进行恢复或删除操作。

  • (5) 后台页面

后台页面是博客网站中用于管理博客的页面之一,只能被管理员所访问。后台页面提供了一系列用于管理博客的工具和选项,以便管理员可以对博客进行新增、修改、删除,以及修改密码等操作。

后台页面包括新增博客、修改博客公开性、删除博客、进入博客页面、转到图床上传页面等选项。管理员可以通过新增博客选项来创建新的博客文章,通过修改公开性选项来修改博客的公开状态,通过删除博客选项来删除不需要的博客文章。

在后台页面中也可以进行修改密码的操作。

进入编辑页面选项可以让管理员进入博客文章的编辑页面,对博客文章进行编辑和管理。转到图床上传页面选项可以让管理员访问图床上传页面,以便上传和管理博客中所需的图片资源。

需要注意的是,后台页面只能被管理员所访问,以确保博客网站的安全性和管理效率。管理员需要妥善保管自己的密码,避免泄露或被盗用。

  • (6) 图床页面

图床上传页面是博客网站中用于上传和管理图片资源的页面之一。管理员可以通过图床上传页面将博客所需的图片资源上传到网站上,并对其进行管理和调整,以及修改主页的背景图片。

图床上传页面通常要求上传的图片不能大于 12 MB,以确保上传的图片能够被网站正常接受和处理。

除此之外,图床上传页面还支持列出所有的图片和 URL,并进行分页展示。这使得管理员可以更好地了解和管理博客中所需的图片资源,以便更好地展示和推广博客内容。

需要注意的是,上传的图片资源应当符合网站的相关规定和要求,避免上传违规、低俗或侵权的图片资源。管理员还应当妥善保管上传图片的版权和使用情况,避免侵犯他人的权益。

管理员可以在图床页面对网站首页背景等进行编辑和管理,以便更好地展示博客的主题和内容。

2.1.2 工作项设置

因为篇幅原因,以下只展示效果,代码可以从我们的代码仓库中获取。

  • (1) Story_主页-Task_显示主页标题,主页背景图

image.png

  • (2) Story_主页-Task_显示所有博客的标题,摘要,标签,博客创建时间,最后编辑时间

image.png

  • (3) Story_主页-Task_备案号,Powered By Huawei Cloud

image.png

  • (4) Story_主页-Task_按标签检索

image.png

  • (5) Story_博客详情页面-Task_文章的标题和内容,访问量,创建时间,修改时间,CC BY SA 4.0

image.png

  • (6) Story_登录页面-Task_管理员需要通过密码登录,以获得发布、编辑文章的权限

image.png

  • (7) Story_博客编辑页面-Task_文本框,保存,重置到修改前,编辑标题,编辑标签,删除(软删除),编辑摘要,删除文章

image.png

  • (8) Story_博客编辑页面-Task_MarkDown语法

image.png

  • (9) Story_图床上传页面-Task_上传图片,支持列出所有的图片和URL,单个图片不能大于12MB & Task_编辑首页背景图

image.png

  • (10) Story_后台页面-Task_新增博客,修改公开性,删除博客

image.png

2.1.3 迭代

2.2 代码托管

本项目使用华为云 DevCloud 平台进行软件项目的一站式开发、管理,使用华为 ECS 弹性云服务器部署软件系统。

2.2.1 开发提交

在本地 IDE 中开发 (Pycharm),在完成初版软件代码后上传至 DevCloud 代码仓库进行后续开发;

image.png

2.2.2 代码检查

本项目使用华为云 DevCloud 平台进行代码检查

image.png

2.3 编译构建

2.3.1 构建配置

创建构建任务,配置构建步骤,执行构建成功并生成发布包。

image.png

2.3.2 持续集成

启动持续集成,实现代码变更后自动触发。

image.png

2.4 部署

2.4.1 主机设置

我们将软件部署到华为 ECS 弹性云服务器。

image.png

2.4.2 部署配置

在服务器上创建以下部署任务,配置部署步骤,执行部署。

image.png

通过访问:http://121.36.97.69:8787/,可以浏览我们的博客。

image.png

2.5 分支合并和持续交付

2.5.1 分支合并

为了保证项目的稳定运行,我们有一个稳定的持续可用的分支“Master”,我们不直接在 Master 分支上进行代码开发。在后面的功能开发中统一使用功能分支+合并请求的方式进行功能的开发与合并。针对每个页面设置一个分支,记为 feature+序号,通过合并请求,经审核后将功能合并至"Master"。

image.png

2.5.2 持续交付流水线

创建流水线任务,包括代码检查,编译构建,部署任务,使得软件项目可以持续高效地集成和部署。

image.png

3. 总结描述

本项目的目标是为访客提供一个高效、可靠、易用的博客网站,让访客可以在这里尽情地阅读自己感兴趣的文章。为了实现这个目标,我们将提供诸如浏览、标签分类、搜索、博客归档等功能。同时,本项目的用户模型为单一管理员——访客,需要使用密码进行身份验证才能进行一些对博客的操作,以保护数据的安全性。本项目采用了 Python3-Flask、HTML、CSS 和 JavaScript 等技术来实现,并遵循 RESTful 架构原则,使用数据库存储博客数据,使用缓存技术提高系统性能,使用密码哈希技术保护密码安全等设计原则,以保证系统的可靠性、性能和安全性。

4. 思考与建议

  • 着重团队合作:敏捷开发强调团队合作和交流,因此,开发团队成员之间的合作和协作至关重要。为了确保团队的合作,建议在项目初期明确团队成员的角色和职责,并建立有效的沟通渠道,如每日站会、迭代评审会和冲刺回顾会等。

  • 强调快速响应变化:敏捷开发的一个重要特点是快速响应变化。这意味着团队需要具备较高的灵活性和适应性,能够随时调整计划和方向。建议在开发过程中及时收集用户反馈和需求变更,以便及时进行调整。

  • 注重持续交付价值:敏捷开发的目标是持续交付高质量的软件产品。为了实现这一目标,建议在项目初期制定明确的目标和计划,并确保团队成员始终专注于交付价值。同时,应注重测试和质量保证,以确保交付的产品符合用户需求和质量标准。

  • 鼓励创新和实验:敏捷开发的流程和方法可以鼓励创新和实验。团队成员可以自由地提出新的想法和解决方案,以促进产品的不断改进和创新。建议在项目中鼓励团队成员提出新的想法和实验,同时确保这些实验是有计划和可控的。

  • 坚持持续改进:敏捷开发是一个不断改进的过程,团队需要不断地反思和改进自己的方法和流程。建议在项目中定期进行回顾和评估,以识别问题和机会,并根据反馈和评估结果进行调整和改进。同时,应该建立良好的知识管理和分享机制,以便团队成员可以共享经验和知识,促进团队的学习和成长。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。