免费开源的 HelloDjango 系列教程,结束还是开始?

我们已经成功地开发了一个功能比较完备的个人博客,是时候来总结一下我们的工作了。博客系列完整的源代码地址:
https://github.com/HelloGitHub-Team/HelloDjango-blog-tutorial
在教程的前两篇,我们介绍了如何搭建 django 开发环境,如何创建 django 项目以及 django 应用,这是我们进行 django 项目开发的基础。
第 3、4 篇:讲了 django ORM 的基础操作。ORM 是 django 核心中的核心,不仅 django 自带的应用底层全都依赖于 ORM,大部分使用 django 构建的应用基本也离不开 django ORM 的操作,所以能否熟练掌握 django 的 ORM API 决定了能否写出高质量、高性能的 django 应用。
第 5、6 篇:讲解了 django 基本的视图函数,视图函数的作用是接收一个 HTTP 请求,根据这个请求的意图返回相应的 HTTP 响应。在这个请求处理的过程中,通常都会涉及到使用 ORM 进行数据库的增删改查操作。
第 7 篇:介绍了 django 的杀手锏应用,开箱即用的 Admin 管理台。我们可以通过这个管理台直接对数据库中的数据进行增删改查操作。
第 9、10 篇:介绍了 Markdown 的使用,对于博客、技术论坛之类的应用,使用 Markdown 来撰写内容是一个常见的需求。
第 12、13 篇:介绍了如何自定义模板标签并使用它们。模板标签用于 django 的模板系统中,用来生成 HTML 页面。django 的模板系统自带了大量的模板标签。但如果自带的标签不满足需求,我们就可以拓展 django 模板系统的 API 来自定义模板标签。
第 14 篇:我们利用上述学习到的知识开发了一个独立的 django 评论应用。这里面我们还初步接触了表单的使用。django 的表单是对 HTML 表单的封装,它在后台完成数据校验、清理等功能,并对非法的表单输入返回给客户端友好的错误提示。
第 16、17、18、19:向大家介绍了运维方面的知识,包括如何在服务器上部署 django 应用,如何编写自动化脚本来全自动部署,如何给网站开启 HTTPS 以提高安全性。特别是使用 Docker 进行部署后,我们把整个 django 部署的过程缩减到只需线上执行几条命令就能完成,Docker 帮助我们极大简化了部署流程。
第 21 篇:我们介绍了基于类的视图和通用类视图。之前说了,django 的视图本质上是一个函数,它接收一个 HTTP 请求,返回一个 HTTP 响应。类视图虽然是一个类,但这只是针对开发者而言,django 通过 Python 魔法将类转化为一个可被调用的函数。使用类的好处是,它允许被继承,因此在某些情况下可以提高代码的复用性。
第 22 篇:演示了如何在 Python 脚本里面独立地使用 django 的 ORM。一般要使用 django 的 ORM 必须启动整个 django 项目,而如果要在独立的脚本中使用的话,就必须进行一些额外的设置。
第 23 篇:我们介绍了如何使用 django 第三方库,django 的强大不仅在于它自身功能的完备程度,更在于其繁荣的社区。大量开发者在开源平台发布了很多优质的 django 拓展应用,涵盖了 web 开发的方方面面。这里我们只介绍了一个分页应用,更多应用大家可以在 GitHub 通过搜索关键词 django 进行探索。
第 27、28 篇:我们介绍了搜索功能的实现。一开始使用的是比较简单的搜索方式,利用之前所学的 django 知识就能完成。不过为了更好的搜索体验,我们进一步引入了 elasticsearch 这个专业的搜索服务来提供搜索功能,同时使用了一个 django 第三方库 django-haystack 来将 elasticsearch 和 django 无缝对接。同时可以看到,有了 Docker 容器技术,引入一个外部服务变得非常简单。
第 29、30、31 篇:我们对博客补充了完善的单元测试,测试过程中我们发现了一些隐藏的 bug 并进行了修复,由此测试的重要性可见一斑。此外,为了衡量测试的质量,我们使用 coverage.py 对代码测试覆盖率进行了统计,越高的测试覆盖率说明测试越充分,程序出现 bug 的几率也就越小。
现在,我们已经有了一个功能比较完备的个人博客应用。而且,在测试的保障护航下,我们可以在不破坏现用功能的情况下,轻松加入新的功能。
教程进行到这里,HelloDjango 博客教程就要准备告一段落了,大部分 web 开发中的需求,你都可以通过教程中讲到的知识点,结合 django 的官方文档来实现。
不过,真的要结束了吗?我的回答是没有也不想结束!
Django 中还有很多值得介绍的地方,就拿博客来说,我们还可以做这些很酷的功能:
- 支持用户登录,甚至使用 GitHub、新浪微博等第三方应用登录
- 支持多级评论
- 国际化
- 使用缓存进行性能优化
- 支持邮件订阅,有新的博客就发送邮件提醒订阅者
等等,这些对于其他 Web 系统来说,基本也都是必不可少的。
所以,HelloDjango 博客项目会继续以这样的形式继续下去:
围绕着某一个功能进行开发,功能开发完成之后附带输出一篇详细介绍功能实现原理和过程的教程。我希望 HelloDjango 博客项目不仅仅是一个教学演示项目,也不仅仅是一个高质量、功能完备的 django 第三方博客应用,而是两者都是!
这些教程会及时通过 HelloGitHub 微信公众号和 追梦人物的博客 进行更新,敬请关注!
号外
此外,虽然 HelloDjango 博客项目教程定期更新已经结束,但接下来我会开始以定期更新的方式向大家介绍如何 django-restframework + Vue 或者 React 这种更加现代化的前后端分离开发方式,大量公司都采用这种开发方式,如果你以找工作为目的而学习 django 的话,怎么能不学习这种开发模式呢?
HelloDjango-blogs 的教程暂时告一段落,全新的 HelloDjango-django-restframework 系列教程就要要重新扬帆起航了,大家敬请期待!
所以还是那句话,敬请关注 HelloGitHub 微信公众号以及 追梦人物的博客,免费学习 Django 全栈开发。

免费开源的 HelloDjango 系列教程,结束还是开始?的更多相关文章
- 第 14 篇:交流的桥梁“评论功能”——HelloDjango 系列教程
截止到目前为止我们的 django blog 文章展示部分,已经实现的"八九不离十"了.你以为本系列文章就要结束了吗?不能够!新的征程才刚刚开始,HelloDjango 系列文章刚 ...
- 第 15 篇:优化博客功能的细节,提升使用体验—— HelloDjango 系列教程
作者:HelloGitHub-追梦人物 文中涉及的示例代码,已同步更新到 HelloGitHub-Team 仓库 在之前的系列教程中,我们已经实现了:文章的发布.展示.评论等功能,可能认真的小伙伴已经 ...
- HelloDjango 系列教程:博客从“裸奔”到“有皮肤”
文中涉及的示例代码,已同步更新到 HelloGitHub-Team 仓库 在此之前我们已经编写了博客的首页视图,并且配置了 URL 和模板,让 django 能够正确地处理 HTTP 请求并返回合适的 ...
- HelloDjango 系列教程:创建 Django 博客的数据库模型
文中涉及的示例代码,已同步更新到 HelloGitHub-Team 仓库 设计博客的数据库表结构 博客最主要的功能就是展示我们写的文章,它需要从某个地方获取博客文章数据才能把文章展示出来,通常来说这个 ...
- HelloDjango 系列教程:第 04 篇:Django 迁移、操作数据库
文中涉及的示例代码,已同步更新到 HelloGitHub-Team 仓库 我们已经编写了博客数据库模型的代码,但那还只是 Python 代码而已,django 还没有把它翻译成数据库语言,因此实际上这 ...
- HelloDjango 系列教程:Django 的接客之道
文中涉及的示例代码,已同步更新到 HelloGitHub-Team 仓库 Web 服务简单的说就是处理请求,每个请求就像是一个"顾客".首先热情地把顾客迎接进来,然后满足用户的个性 ...
- asp.Net Core免费开源分布式异常日志收集框架Exceptionless安装配置以及简单使用图文教程
最近在学习张善友老师的NanoFabric 框架的时了解到Exceptionless : https://exceptionless.com/ !因此学习了一下这个开源框架!下面对Exceptionl ...
- C#实现多级子目录Zip压缩解压实例 NET4.6下的UTC时间转换 [译]ASP.NET Core Web API 中使用Oracle数据库和Dapper看这篇就够了 asp.Net Core免费开源分布式异常日志收集框架Exceptionless安装配置以及简单使用图文教程 asp.net core异步进行新增操作并且需要判断某些字段是否重复的三种解决方案 .NET Core开发日志
C#实现多级子目录Zip压缩解压实例 参考 https://blog.csdn.net/lki_suidongdong/article/details/20942977 重点: 实现多级子目录的压缩, ...
- 小熊派IoT开发板系列教程正式发布——免费学习
[摘要] 小熊派开源社区针对小熊派IoT开发板首次规划了小熊派未来的系列教程.从基础到进阶的设计,可适应具有不同基础的开发者,通过该系列教程的学习,开发者能够轻松掌握IoT产品的开发.该系列教程包括单 ...
随机推荐
- Java IO: RandomAccessFile
原文链接 作者: Jakob Jenkov 译者: 李璟(jlee381344197@gmail.com) RandomAccessFile允许你来回读写文件,也可以替换文件中的某些部分.FileIn ...
- Java IO: OutputStream
原文链接 作者: Jakob Jenkov 译者: 李璟(jlee381344197@gmail.com) OutputStream类是Java IO API中所有输出流的基类.子类包括Buffere ...
- 使用junit测试springMVC项目提示ServletContext找不到定义错误
原文链接:https://blog.csdn.net/liu_gan/article/details/78400627 @RunWith(SpringJUnit4ClassRunner.class) ...
- sql执行过程
作为一个程序员,几乎所有人都使用过 SQL 语言,无论是在命令行执行.程序调用,还是在 SQL 工具里,你都做过这样的事:写一个规范的 SQL 语句,然后等待数据库返回的结果,然后再基于结果做各种逻辑 ...
- FOR xml path 这么爽的SQL命令,居然今天才知道
select stuff((select ControlName from Base_Controls FOR xml path('')),1,1,'')
- shell清除文件内容脚本
先来代码: [root@localhost Qingchu]# cat Qingchu.sh #!/bin/bash #描述: #作者:孤舟点点 #版本:1.0 #创建时间:-- :: PATH=/b ...
- Python---11模块
在计算机程序的开发过程中,随着程序代码越写越多,在一个文件里代码就会越来越长,越来越不容易维护. 为了编写可维护的代码,我们把很多函数分组,分别放到不同的文件里,这样,每个文件包含的代码就相对较少,很 ...
- Django学习之路04
视图层 小白必会三板斧 HttpResponse render redirect django视图函数必须要给返回一个HttpResponse对象(render和redirect内部返回的也是一个Ht ...
- Leetcode 063 不同路径二
一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为"Start" ). 机器人每次只能向下或者向右移动一步.机器人试图达到网格的右下角(在下图中标记为" ...
- 根据现有的数据库自动生成Django model
Django引入外部数据库还是比较方便的,首先在setting里面设置你要连接的数据库类型和连接名称,地址之类,和创建新项目的时候一致 运行下面代码可以自动生成models模型文件 python ma ...