“micro”的意义
‘micro’并不意味着整个web应用必须融入到一个单python文件(尽管一定能),也不以意味这Flask缺少一些功能。微框架(microframework)中的’micro’意味着Flask旨在保持简单但可扩展这个核心。Flask不会做任何决定,比如用什么数据库。Flask所做的决定很容易去改变,比如使用什么模版引擎。其它任何事情都由开发者来决定,因此,Flask可以是开发者需要的一切和不需要的任何东西。
默认情况下,Flask不包含数据库抽象层,表单确认或任何已经存在可以处理表单确认的库。然而,Flask支持扩展添加到这样的功能到应用中,就像Flask自己实现的一样。许多扩展提供数据库集成,表单确认,上传处理,各种开源认证技术等等。Flask可能是微小,但是已经准备好各种生产使用的需求。
配置和约定
启动后,Flask有很多带有合理默认值的配置值和一些规定。为方便,模版和静态文件存储在带有应用的python源码数的子目录下,名字分别为templates和static。当然也可以更改,但通常不必修改,尤其是启动后。
成长的Flask
一旦启动运行Flask,可以在社区找到各种扩展应用应用到生产中的项目中。Flask核心团队评估扩展并保证提供的扩展不会改变之后的版本。
随着代码库增长,可以自由地为项目做设计决定。Flask会继续提供非常简单的最好的python必须提供的粘合层。可以使用SQLAlchemy或其它数据库工具的高级功能、适当引入非关系型数据持久化、可以使用与框架无关的工具建立python web接口WSGI。
Flask的本地线程
Flask的设计决策之一是,简单任务就应该是简单的,不应该需要大量代码,也不应该限制开发者。正因为如此,Flask可以有很多设计选择。例如,Flask内部使用本地线程对象,这样为保持线程安全要求,不必要把对象在函数之间进行传递。这个方法是方便,但是需要一个有效的请求上下文来依赖引入,或者尝试重用使用一个和请求挂钩的值的代码。
小心开发web
在构建web应用时,要一直谨记安全。
如果写web应用,也许允许用户注册和在服务器上保存数据。用户委托数据,即使自己是唯一的可能需要在应用中保存数据的用户,仍要保证数据的安全。
很不幸的是,有很多方法可以损害web应用的安全性。Flask能够避免现在web应用最常见的安装问题:跨站脚本攻击(XSS)。如果将不安全的HTML标记为安全,否则Flask和底层的Jinja2模版引擎会覆盖。但是有很多引起安全问题的因素。
其中一些安全问题比人们想的更复杂。有时会低估一个漏洞被利用的可能性,直到攻击者找到利用应用的方法。不要任务自己的应用是不重要的,就不会吸引攻击者。根据攻击的种类,可能是自动机器人探测使用垃圾邮件、恶意软件的链接等等来填充数据库的方法。
Flask与其它框架并没有什么不同,在建立的时候必须谨慎。当简历需求是,要观察使用。