Flask大型教程:调试,测试以及优化

我们小型的 microblog 应用程序已经足够的完善了,因此是时候准备尽可能地清理不用的东西。近来,一个读者反映了一个奇怪的数据库问题,我们今天将会调试它。这也提醒我们不论我们是多小心以及测试我们应用程序多仔细,我们还是会遗漏一些 bug。用户是很擅长发现它们的!不是仅仅修复此错误,然后忘记它,直到我们遇到另一个。我们会采取一些积极的措施,以更好地准备下一个。在本章的第一部分,我们将会涉及到 调

Flask大型教程:Ajax

这将是国际化和本地化的最后一篇文章,我们将会尽所能使得 microblog 应用程序对非英语用户可用和更加友好。不知道大家平时有没有见过网站上有一个 “翻译” 的链接,点击后会把翻译后的内容在旁边显示给用户,这些链接触发一个实时自动翻译的内容。谷歌显示这个 “翻译” 链接是为了能够显示外国语言的搜索结果。Facebook 显示它为了能够翻译 blog 内容。今天我们将要添加同样的功能的 “翻译”

Flask大型教程:日期和时间

善意提醒¶对于那些还没有注意到的读者,近来项目已经迁移到 github 上,你们可以在这个位置找到代码: https://github.com/miguelgrinberg/microblog。我已经添加了标签指向每个教程步​​骤,为您提供便利。时间戳的问题¶我们 microblog 应用程序已经忽略很长时间的一个方面就是时间和日期的显示。到目前为止,我们信任 Python 本身去渲染在我们 Us

Flask大型教程:国际化和本地化

今天的文章的主题是国际化和本地化,通常简称 I18n 和 L10n。我们想要我们的 microblog 应用程序被尽可能多的用户使用,因为我们不能忘记有许多人是不是讲英文的,或者会说英文,但是更愿意讲本国语言。为了使得我们的应用程序便于外国访问者,我们将要使用 Flask-Babel 扩展,它提供了一种简单使用的框架用来把应用程序翻译成不用的应用。如果你还没有安装 Flask-Babel,现在是时

Flask大型教程:换装

简介¶如果你一直追随着 microblog 应用程序,你可能发现我们并没有在应用程序的外观上花很多的时间。到目前为止,我们使用的模板是基本的,并且没有风格而言。这也是有帮助的,当我们编码的时候,我们不想为编写好看的 HTML 而分心。这篇文章将会与以前的有所不同,因为写好看的 HTML/CSS 是一个巨大的话题,超出这一系列的预期范围。这里不会有任何 HTML 或 CSS 的细节,我们将只讨论基本

Flask大型教程:邮件支持

回顾¶在近来的几篇教程中,我们一直在与数据库打交道。今天我们打算让数据库休息下,相反我们今天准备完成网页应用程序中一项重要的功能:能够给用户发送邮件。在我们小型 microblog 应用程序,我们将要实现一个与邮件有关的功能,我们将会给用户发送一封邮件当他或者她被人关注的时候。实现邮件有很多方式,因此我们需要设计一个通用的框架,以便重用。安装 Flask-Mail¶幸运地,Flask 已经存在处理

Flask大型教程:全文搜索

回顾¶在前面的章节(分页),我们已经加强了数据库查询,因此能够在页面上获取各种查询。今天,我们会继续探讨数据库的话题,只是领域不同。所有存储内容的应用程序必须提供搜索能力。许多其它类型的网站可能使用了谷歌、必应等索引所有的内容并且提供查询结果。这个对于大多数静态页面的网站,像论坛,是很好用。我们应用程序 microblog 的基本单元是用户短小的 blog,不是整个页面。我们希望搜索结果是动态的。

Flask大型教程:分页

回顾¶在前面的章节(关注者,联系人和好友),我们已经完成了所有支持 “关注者” 功能的数据库的修改。今天我们将会让我们应用程序接受用户的真实数据。我们将要告别伪造数据的时候!我们接下来讲述的正是我们上一章离开的地方,所以你可能要确保应用程序 microblog 正确地安装和工作。提交博客文章¶让我们先以简单的内容开始,主页应该有一个提交新的 blog 的表单。首先我们定义一个单字段的表单对象(文件

Flask大型教程:关注者,联系人和好友

回顾¶我们小型的 microblog 应用程序已经慢慢变大,到现在为止我们已经接触了需要完成应用程序的大部分的话题。今天我们将更加深入地学习数据库。我们应用程序的每一个用户都能够选择他或者她的关注者,因此我们的数据库必须能够记录谁关注了谁。所有的社交应用都会以某种形式实现这个功能。一些应用程序称它为联系人,其他连接,好友,伙伴或者关注者。其他的站点使用同样的主意去实现允许和忽略的用户列表。我们称它

Flask大型教程:单元测试

回顾¶在上一章中我们集中在一步一步为我们的应用程序的添加功能。到目前为止,我们有一个数据库功能的应用程序,它能够注册用户,允许用户登录以及登出,查看以及编辑他们的用户信息。在本章中,我们不打算添加新的特性。相反,我们将要寻找方式来保证我们编写的代码的健壮性,我们也创建了一个测试框架用来帮助我们避免将来的失败和回归测试。发现 bug¶我记得在上一章结尾的时候,我特意提出了应用程序存在 bug。让我来