Flask是非常流行的python web 框架
优点:
非常齐全的官方文档,上手非诚方便
有非常好的扩展机制和第三方扩展环境
社区活跃度非常高
Flask主要依赖三个库:
JinJa2:默认的模板引擎
Werkzeug:一个包含WSGi,路由,调试的工具集
Itsdangerous:基于Django签名模块的签名实现
Web程序和数据库交互使用SQLAlchemy,MongoEngine,不用ORM(对象关系映射)而基于Mysql-python这样的底层驱动进行开发
From flask import Flask 引入Flask实现一个WSGi应用
App = Flask(__name__) app是Flask的实例,它接受包或模块的名字,一般用__name__通过它去确定根目录,以便获取静态文件和模板文件目录
@app.rount() 将url和视图函数的关系保存到app.url_map属性上
调试模式
app.debug = True
App.run这样方式使用于启动本地的开发服务器,每次修改要重启服务器,进入调试模式后服务器会自动载入代码并返回错误上下文及调试页面
动态url规则
@app.rount(‘/item/
尖括号的内容是动态的,凡是匹配到item的url都会映射到这个路由上,内部的id作为参数获得
默认是string(int,float,path,uuid,any)
HTTP方法
@app.rount(‘/login’,methods=[GET,POST])
唯一url
@app.rount(‘/projexts/’)
结尾不带/会别重定向到/规范的url上,会出现搜索错误的情况
构造url
url_for() 构造url ,不直接写url的原因在未来要更改时只需改一次,url转移特殊字符时他会自己处理
跳转和重定向
Redirect() 跳转状态吗时301,重定向是302
蓝图
蓝图(Blueprint)实现了应用的模块化,让应用层次清晰,开发者便于维护项目。
使用app.register_blueprint()注册模块,用Blueprint()实例模块的变量替代app
模板Jinja2引擎
Jinja是日本寺庙的意思,并且寺庙的英文temple和template的发音相似。Jinja2是flask默认的仿Django的一个模板引擎,由flask的作者开发。
优点:
让Html设计者和后端python开发工作分离
减少使用python的复杂程度,页面逻辑相对独立,易于维护
模板非常灵活,快速和安全,对设计者和开发者更友好
提供了控制语句,继承等高级功能,减少开发的复杂度
Jinja2是Flask的一个依赖,安装flaks,Jinja2也随之安装
{# #} 模板注释
{% %} 用于执行for循环或赋值的语句
{{ }} 用于把表达式的结果输出到模板上
模板继承
{% block head%} {% endblock%} 子模板重载
宏(类似于函数)
使用`macro`这个模板标签创建宏
在真实的开发中,会将一些常用的宏单独放在一个文件中,在需要使用的时候,再从这个文件中进行导入。
例:
{% import 'forms.html' as forms %}
{% from 'forms.html' import input as input_field %}
{% from 'forms.html' import input %}
扩展:
Mako模板引擎,性能和Jinja2类似,由知名的框架支持,如Pylons和Pyramid内置Mako作为默认模板引擎,支持在模板中写原生python,对python工程师友好,Jinja2带来的好处是易于维护,使得模板有更好的可读性,Mako限制少使得工作更有效率,整个项目维护更好。