Flask 中的 @app.context_processor 和 @app.app_template_global() 修饰器及如何在 Jinja 模版中使用
使用 @app.context_processor 和 @app.app_template_global() 修饰器的方法,可当做全局上下文变量在所有模板中直接被调用。
@app.context_processor 修饰的方法返回的是一个字典(注意 context_processor 后没有括号)。例如:
```
@app.context_processor
def context_user():
user={'name':'Jack','email':'jack@jack.com'}
return {'user':user}
```
Jinja 默认中使用:
```
<div>Name: {{user.name}} </div>
<div>Email: {{user.email}} </div>
```
@app.context_processor 修饰的方法返回的依然是一个方法,可带参数(注意 app_template_global 后有括号)。例如:
```
@app.app_template_global()
def get_email(user_name):
return service_get_user_email_by_name(user_name)
```
Jinja 默认中使用:
```
<div>Name: {{user.name}} </div>
<div>Email: {{get_email(user.name)}} </div>
```
我的笔记