Flask作为一个简洁的Web开发框架,从众多框架中脱颖而出,原因在于它让开发者做主,开发者可以自由的选择适合于自己项目的扩展,而不必受制于框架。学习Flask,刚开始你或许还在对框架的简洁小巧赞叹不已,但在开发的时候,难免使用一些别人造好的轮子,来提高开发效率。下面就是一些常用的Flask扩展,希望对你有一些帮助。
Flask的扩展都暴露在flask.ext命名空间下,你可以在环境中通过pip安装好相应扩展,然后再在程序中导入相应的包即可使用扩展。
Flask-Script
这是一个让你的命令行支持自定义命令的工具,它为Flask程序添加了一个命令行解释器。例如你可以让你的程序直接从命令行直接执行相应的操作如
python yourapp.py initdb
Flask-Script安装通过如下方式:
pip install flask-script
例子:
from flask.ext.script import Manager
manager = Manager(app)
#...
if __name__ == '__main__':
manager.run()
在例子中,服务器由manager.run()启功,启动后就能解析命令行了。这样设置以后,我们可以使用扩展自带的一些基础命令了,从命令行启动这个例子中的程序,会显示一些用法消息,可以依照消息学习自带的命令。当然,你也可以自己扩展自己的命令,详细的用法就问google吧。
Flask-WTF
这是一个处理Web表单的扩展。安装命令:
pip install flask-wtf
在网站的搭建过程中,重复的表单提交可以使用这个扩展来处理,使用这个扩展,你需要定义你要处理的表单相对应的类,例如:
from flask.ext.wtf import Form
from wtforms import StringField, SubmitField
form wrforms.validators import Requeired
class NameForm(Form):
name = StringField('what is your name', validators=[Required()])
submit = SubmitField('Submit')
然后,你可以直接把表单渲染成HTML:
<form method="POST">
{{ form.hidden_tag() }}
{{ form.name.lavel }} {{ form.name() }}
{{ form.submit() }}
</form>
其中,form.hidden_tag()是用于跨站请求伪造保护的,是必须的参数。
当然,像这样渲染出来的页面很原始,不够美观,你可以把参数传入渲染字段的函数,这样,传入的参数就会转换成字段的HTML属性。
Flask-SQLAlchemy
这是一个强大的关系型数据库扩展,你可能要在你的应用中使用不同的数据库,当你使用这个扩展以后,你可以在不同的数据库中切换(支持的数据库有:MySQL,Postgres,SQLite,SQLite),并且扩展大大简化了对数据库的操作
安装命令:pip install flask-sqlalchemy