如何使用flask的 @app.context_processor 装饰器
@app.context_processor
是 Flask 中的一个装饰器,用来注册一个上下文处理函数,可以在所有模板中使用。这个装饰器通常用来注册一些通用的变量,比如网站的名称、公司名称等。
以下是一个示例
在这个示例中,@app.context_processor
装饰器注册了一个名为 inject_variables
的函数,这个函数会在每次请求处理过程中执行。
在这个函数中,我们可以注册一些通用的变量,比如网站的名称、公司名称等。这些变量可以在所有模板中使用。
from flask import Flask, g app = Flask(__name__) @app.route('/') def index(): return render_template('index.html') @app.context_processor def inject_variables(): return { 'site_name': 'My Website', 'company_name': 'My Company' }
在模板中,我们可以通过 {{ site_name }} 和 {{ company_name }} 来访问这些变量。例如,在 index.html 模板中可以这样使用:
<!DOCTYPE html> <html> <head> <title>{{ site_name }}</title> </head> <body> <h1>Welcome to {{ site_name }}!</h1> <p>Thanks for visiting {{ company_name }}.</p> </body> </html>
注意
需要注意的是,@app.context_processor
装饰器的函数需要返回一个字典,这个字典中包含我们要注册的变量。
这些变量会被注入到模板上下文中,可以在所有模板中使用。如果需要注册多个变量,可以将它们放在一个字典中返回。
在函数中,我们可以根据需要注册一些变量,然后返回这个字典。如果不需要注册任何变量,可以返回一个空字典 {}。