Flask探索:结尾

我不太喜欢这个时候有太多的结论。我只是希望看完这本书能够帮助你完成在 Flask 中冒险。如果是这样的话,请联系我!我喜欢听取享受阅读这本书的人的心声。如果您有任何建议可以随时让我知道,提高本书内容的也可以。感谢你们的阅读!- Robert

Flask探索:与用户有关的进阶技能

一个现代 web 应用程序需要做的最常见的事情就是处理用户。拥有基本账号功能的一个应用程序需要处理很多的事情,像注册,确认电子邮箱,安全地存储密码,安全地重置密码,认证等等。因为在处理用户的时候存在很多安全的问题,通常最佳的方式就是坚持在这个领域中的标准模式。Note在本节中,我们假设你是使用 SQLAlchemy 模型以及 WTForms 来处理你的表单输入。如果你没有使用这些的话,你需要自己使

Flask探索:部署

我们终于准备好向全世界展示我们的应用程序了。是时候要部署。这个过程可能是痛苦的因为有许多琐碎的事情要去做。当涉及到生产环境的搭建以及服务器的配置方案,这是有很多的选择需要做出。在本章中,我们会讨论一些重要的部分以及一些我们可能会用到的选项(关于主机或者服务器的搭建方式等等)。主机¶首先我们需要一台服务器。现在有成千上万的服务器供应商,但是我个人建议的有三家。我不打算在这里介绍如何开始使用它们的细节

Flask探索:处理表单

表单是让用户与我们的网页应用程序交互的基本元素。Flask 本身并不会帮助我们处理表单,但是 Flask-WTF 扩展让我们在我们的 Flask 应用程序中使用流行的 WTForms 包。这个包使得定义表单和处理提交容易一些。Flask-WTF¶我们想要使用 Flask-WTF 做的第一件事情(在安装它以后)就是在 myapp.forms 包中定义一个表单。# ourapp/forms.pyfro

Flask探索:存储数据

大部分 Flask 应用程序会在某一时刻处理存储数据。存在许多不同的方式来存储数据。寻找最好的一种方式完全取决于你要存储的数据。如果你存储关系型数据(例如,一个用户有多篇文章,每篇文章都有一个作者等等),一个关系型数据库可能是一种合适的方式。其它类型的数据可能适合 NoSQL 数据存储,像 MongoDB。我将不会告诉你们该如何为你的应用程序选择数据库引擎。有些人会告诉你 NoSQL 是唯一的选择

Flask探索:静态文件

顾名思义,静态文件就是那些不会改变的文件。在一般的应用程序中,静态文件包括 CSS 文件,JavaScript 文件以及图片。它们也可能是音频文件以及其它类似的东西。组织你的静态文件¶我们将会在我们的应用程序包里为我们的静态文件创建一个叫做 static 的目录。在 static/ 中如何组织你的文件是取决于个人喜好。就我个人而言,我会对第三方的库(比如,jQuery, Bootstrap等等)混

Flask探索:模板

虽然 Flask 并不强迫我们使用任何一个特定的模板语言,它假设我们要使用 Jinja。在 Flask 社区中大部分开发者使用 Jinja,我建议你们也这样做。有很多的扩展帮助我们使用其它的模板语言,像 Flask-Genshi 和 Flask-Mako。坚持使用默认的模板语言,除非你有更好的理由使用其它的模板语言。还不知道 Jinja 语法不是一个好的理由!你会节省大量的时间和烦恼。Note当我

Flask探索:视图和路由的进阶技能

视图装饰器¶Python 装饰器是用于转换其它函数的函数。当一个装饰的函数被调用的时候,装饰器也会被调用。接着装饰器就会采取行动,修改参数,停止执行或者调用原始函数。我们可以使用装饰器来包装视图,让它们在执行之前运行我们希望的代码。@decorator_functiondef decorated():pass如果你已经浏览了 Flask 教程,在这个代码块的语法看起来很熟悉。@app.route

Flask探索:蓝图

什么是蓝图?¶一个蓝图定义了视图,模板,静态文件以及可以用于应用程序的其它元素的集合。例如,让我们假设下我们有一个管理面板的蓝图。这个蓝图会定义一些包含像 /admin/login 和 /admin/dashboard 路由的视图。它也可能包含服务于这些路由的模板以及静态文件。接着我们可以使用这个蓝图添加一个管理面板到我们的应用程序中,不论我们的应用程序是什么类型的。为什么要使用蓝图?¶蓝图“杀手

Flask探索:配置

当你学习 Flask 的时候,配置看起来很简单。你只要在 config.py 中定义一些变量接着一切就能工作了。当你开始必须要管理生产应用的配置的时候,这些简单性开始消失了。你可能需要保护 API 密钥以及为不同的环境使用不同的配置(例如,开发和生产环境)。在本章节中我们会介绍 Flask 一些先进的功能,它可以使得管理配置容易些。简单的例子¶一个简单的应用程序可能不会需要任何这些复杂的功能。你可