你能够在本身的模板中访问一些 Flask 默认内置的函数和对象python
你能够从模板中直接访问Flask当前的config对象:sql
{{config.SQLALCHEMY_DATABASE_URI}} sqlite:///database.db
就是flask中表明当前请求的request对象:数据库
{{request.url}} http://127.0.0.1
为Flask的session对象flask
{{session.new}} True
在视图函数中设置g变量的 name 属性的值,而后在模板中直接能够取出安全
{{ g.name }}
url_for会根据传入的路由器函数名,返回该路由对应的URL,在模板中始终使用url_for()就能够安全的修改路由绑定的URL,则不比担忧模板中渲染出错的连接:cookie
{{url_for('home')}} /
若是咱们定义的路由URL是带有参数的,则能够把它们做为关键字参数传入url_for(),Flask会把他们填充进最终生成的URL中:session
{{ url_for('post', post_id=1)}} /post/1
这个函数会返回以前在flask中经过flask()传入的消息的列表,flash函数的做用很简单,能够把由Python字符串表示的消息加入一个消息队列中,再使用get_flashed_message()函数取出它们并消费掉:app
{%for message in get_flashed_messages()%} {{message}} {%endfor%}
上下文:至关于一个容器,保存了 Flask 程序运行过程当中的一些信息。函数
Flask中有两种上下文,请求上下文和应用上下文工具
思考:在视图函数中,如何取到当前请求的相关数据?好比:请求地址,请求方式,cookie等等
在 flask 中,能够直接在视图函数中使用 request 这个对象进行获取相关数据,而 request 就是请求上下文的对象,保存了当前本次请求的相关数据,请求上下文对象有:request、session
它的字面意思是 应用上下文,但它不是一直存在的,它只是request context 中的一个对 app 的代理(人),所谓local proxy。它的做用主要是帮助 request 获取当前的应用,它是伴 request 而生,随 request 而灭的。
应用上下文对象有:current_app,g
应用程序上下文,用于存储应用程序中的变量,能够经过current_app.name打印当前app的名称,也能够在current_app中存储一些变量,例如:
current_app.name current_app.test_value='value'
g 做为 flask 程序全局的一个临时变量,充当者中间媒介的做用,咱们能够经过它传递一些数据,g 保存的是当前请求的全局变量,不一样的请求会有不一样的全局变量,经过不一样的thread id区别
g.name='abc'