Flask 中文教程
Flask 数据库模式
首先我们要创建数据库模式。对于这个应用来说,一张表就足够了,而且只需支持 SQLite,所以会很简单。只需要把下面的内容放进一个名为schema.sql 的文件,放在刚才创建的 f…
Flask 应用设置代码
现在我们已经有了数据库模式,我们可以创建应用的模块了。让我们把它叫做 flaskr.py ,并放置在 flaskr 目录下。我们从添加所需的导入语句和添加配置部分开始。对于小型应用…
Flask 数据库连接
我们已经创建了一个能建立数据库连接的函数 connect_db ,但它本身并不是很有用。总是创建或关闭数据库连接是相当低效的,所以我们会让连接保持更长时间。因为数据库连接封装了事务…
Flask 视图函数
现在数据库连接已经正常工作,我们终于可以开始写视图函数了。我们一共需要写 四个: 显示条目 这个视图显示数据库中存储的所有条目。它绑定在应用的根地址,并从数据库查询出 文章的标题和…
Flask 模板
接下来我们应该创建模板了。如果我们现在请求 URL,只会得到 Flask 无法找到模板的异常。模板使用 Jinja2 语法并默认开启自动转义。这意味着除非你使用Markup 标记或…
Flask 添加样式
现在其它的一切都可以正常工作,是时候给应用添加样式了。只需在之前创建的static 文件夹中创建一个名为 style.css 的样式表: body { font-family: s…
Flask 应用测试
现在你应该完成你的应用,并且一切都按预期运转正常,对于简化未来的修改,添加自动测试不是一个坏主意。上面的应用将作为文档中 测试 Flask 应用 节的例子来演示如何进行单元测试。去…
Flask Jinja 配置
Jinja 2 默认配置如下: 所有扩展名为 .html 、 .htm 、 .xml 以及 .xhtml 的模板会开启自动转义 模板可以利用 {% autoescape %} 标签…
Flask 标准上下文
下面的全局变量默认在 Jinja2 模板中可用: config 当前的配置对象 (flask.config) 0.6 新版功能. 在 0.10 版更改: 现在这总是可用的,甚至在导…
Flask 标准过滤器
这些过滤器在 Jinja2 中可用,也是 Jinja2 自带的过滤器: tojson() 这个函数把给定的对象转换为 JSON 表示,如果你要动态生成 JavaScript 这里有…
Flask 控制自转义
自动转义的概念是自动转义特殊字符。 HTML (或 XML ,因此也有 XHTML )意义下的特殊字符是 & , > , < , “ 以及 '…
Flask 上下文处理器
Flask 上下文处理器自动向模板的上下文中插入新变量。上下文处理器在模板渲染之前运行,并且可以在模板上下文中插入新值。上下文处理器是一个返回字典的函数,这个字典的键值最终将传入应…
Flask 测试 Flask 应用
没有经过测试的东西都是不完整的 这一箴言的起源已经不可考了,尽管他不是完全正确的,但是仍然离真理不远。没有测试过的应用将会使得提高现有代码质量很困难,二不测试应用程序的开发者,会显…
Flask 应用程序
首先,我们需要一个应用来测试,我们将会使用 教程 这里的应用来演示。如果您还没有获取它,请从 the examples 这里查找源码。
Flask 测试的大框架
为了测试这个引用,我们添加了第二个模块(flaskr_tests.py),并且创建了一个框架如下: import os import flaskr import unittest …
Flask 登录和登出
我们应用的大部分功能只允许具有管理员资格的用户访问。所以我们需要一种方法来帮助我们的测试客户端登陆和登出。为此,我们向登陆和登出页面发送一些请求,这些请求都携带了表单数据(用户名和…
Flask 测试消息的添加
我们同时应该测试消息的添加功能是否正常,添加一个新的测试方法如下: def test_messages(self): self.login('admin', …
Flask 其他测试技巧
除了如上文演示的使用测试客户端完成测试的方法,也有一个test_request_context() 方法可以配合 with 语句用于激活一个临时的请求上下文。通过它,您可以访问 r…
Flask 伪造资源和上下文
0.10 新版功能. 在应用上下文或 flask.g 对象上存储用户认证信息和数据库连接非常常见。一般的模式是在第一次使用对象时,把对象放在应用上下文或flask.g 上面,而在请…
Flask 访问和修改 Sessions
0.8 新版功能. 有时,在测试客户端里访问和修改 Sesstions 可能会非常有用。通常有两种方法实现这种需求。如果您仅仅希望确保一个 Session拥有某个特定的键,且此键的…