该部分的文档,大多是零散的文章,这些文章以一些关于flask背景信息开始介绍,接着的重点一步步介绍flask的web开发。
1.1前言 | 在开始flask之前需要先阅读这部分的内容。 希望回答一些问题关于使用该项目的意图和目标,以及什么时候你应该或者不应该使用它。 |
1.1.1[微]的含义 | [微]并不意味着你的整个web应用程序塞进单个Python文件(当然理论上可以这么做),[微]并不意味着flask在功能性能的缺失。[微]在微框架中,Flask的目标是保持核的简单并且可拓展。Flask不会替你做很多决定,比如使用何种数据库。类似的决定,何种模块引擎使用,是很容易改变的。所用的事情可以由你自己决定,Flask可以由你决定什么你需要以及什么你不需要。 默认情况下,Flask并不包含数据库抽象层表单验证或者已经存在的可以处理其他事件的库。相应的,Flask支持扩展,以便将这些功能添加到您的应用程序中,就像在Flask本身中一样。众多的拓展提供,如数据库集成,表单验证,上传处理,众多开放式验证技术,等等。Flask提供可能是[微],但是它已经做好了为众多产品使用提供需求。 |
1.1.2配置及惯例 | 刚起步的时候,Flask有很多合理配置的缺省值和惯例。按照惯例,模板和静态文件存储在应用的Python源文件树子目录中,相应的名字为templates和static。惯例是可以改变的,你没有必要改变,尤其是在在刚开始的时候。 |
1.1.3Flask的可持续发展 | 一旦你有Flask开始和运行,你会在社区中发现众多的可扩展的功能为你的产品集成项目。Flask核心团队会审核拓展并且确保已验证的拓展不影响未来版本发布。 随着你的代码库的增加,你为你项目自由的做出合适决定。Flask一直提供一个非常简单的胶合层,就像Python提供的一样好。你可以自由地使用SQLAlchemy执行高级模式,或者使用其他数据库工具,亦可引入非关系数据模型,甚至还可以利用用于Python网络接口WSGI的非框架工具。 Flask包含许多可以自定义的钩子。考虑到你更多的自定义,Flask类专门为集成打造。 如果对这一点感兴趣,请阅读大型应用一节。如果对Flask的设计原则感兴趣,请移步Flask的设计思路。接下来请阅读安装、快速上手或者针对高级程序员的前言。 |
1.2针对高级程序员的前言 | |
1.2.1Flask本地线程对象 | Flask的设计目标是简单的任务应当尽可能的简单。它们不应该有太多的代码,同时它们不应该限制你(程序猿本身)。因此,Flask有许多的设计思路会让人们发现很惊奇和非传统的(不可思议的unorthodox)。例如,Flask使用了内部线程本地对象,你不需要为了保证线程安全在函数与函数之间的请求之间传递对象。该方法是非常便利的,在依赖注入或者尝试再次使用代码,该代码用值来挂钩请求,这些需要一个稳定的请求环境。Flask对本地线程是直言不讳的,没有隐藏的意思,并且在使用本地线程时在代码中进行了标注和说明。 |
1.2.2Web开发需要注意点 | 在做Web应用开发时,时刻记住保持安全性。 如果你在写一个web应用程序时,你需要尽可能允许用户注册以及把他们的数据保存在你的服务器上。用户给你委托数据。并且甚至你是唯一的用户存放数据在你的应用程序中,你仍然需要保证数据存储的安全性。 不幸的是,web应用的安全被攻击可以有多种方式。在当今Web应用中,Flask保护你的绝大数安全问题:cross-site scripting(XSS)跨站点代码攻击。Flask和下层的Jinja2模板引擎会保护你免受这种攻击,除非故意把不安全的HTML代码放进来。 本文档会警示你:在Web开发的各个方面要时刻注意安全性。这些安全的问题的复杂度远超过一个人的想象,并且有的时候我们低估了我们程序弱点被利用的可能性——直到一个聪明的攻击者找到方法利用我们的程序。不要认为你的程序不重要,还不足引起攻击者的注意。根据不同方式的攻击,有可能性很多自动机器人通过多种方式如垃圾邮件,恶意软件链接等等,填充我们的而数据库。 Flask和其他的框架相同,开发者必须要时刻警惕,检测利用在建立自己的需求时。 |
1.2.3 Python 3在Flask中的支持 | Flask,它的依赖以及绝大数的拓展支持Python 3。如果你想要使用Flask的Python 3可以看一下Python 3的支持页面。 接下来,请阅读安装或快速上手。 |
1.3安装 | Flask依赖一些外部的库,像Werkzeug和Jinja2。 Werkzeug是一种为WSGI提供的工具包。WSGI是Web应用和众多服务器之间的Python标准接口,用于开发和部署。Jinja2是一个渲染模块。 那么如何快速在你的计算机上装好所有东西?本节会介绍多种方法,但是最强力的方法是 使用virtualenv 。因此,我们先说virtualenv。 无论使用哪种方法安装,你都会需要Python 2.6或更高版本。因此请确保安装了最新的Python 2.x版本。在Python 3下使用Flask请参阅Python 3支持 。 |
1.3.1 virtualenv | Virtualenv在你开发过程中很可能要用到它,并且你有权限访问你的生产机器,你也可以同样使用它。Virtualenv解决的是什么问题呢,如果你像我一样热爱Python,除了Flask的基础web应用,还可以使用到它其他的项目中去。随着你的项目的版本越多,就会遇到操作不同版本的Python的问题,或者至少是不同版本的Python库文件。摆在你面前的是:库常常不能向后兼容,更不幸的是任何成熟的应用都不是零依赖。如果两个项目依赖出现冲突,怎么办? Virtualenv解决了这个问题。Virtualenv可以为每一个项目提供多个并列Python版本的安装。但它不是真正地安装多套独立的Python拷贝,而是使用了一种巧妙的方法让不同的项目处于各自独立的环境中。让我们来看看virtualenv是如何运行的。 如果你是在Mac OS X或者Linux,有可能会使用到下面的命令: $ sudo pip install virtualenv 它将在在你的系统之上安装 virtualenv。你也可以使用软件包管理器。如果你使用的是 Ubuntu, 请试一下: $ sudo apt-get install python-virtualenv 如果你在Windows上面没有 esay_install命令,你必须需要首先安装它,安装方法详见 《在Windows系统中使用pip和distribute》。 安装好以后运行上述命令,但是要去掉sudo前缀。 安装完virtualenv,打开一个 shell,创建自己的环境。我通常创建一个包含venv文件夹的项目文件夹: $ mkdir myproject |