@app.url_defaults
装饰器是 Flask 中的一个装饰器,用来注册一个 URL 变量默认值函数。这个函数会在每次构造 URL 时执行,在请求处理函数之前执行,它的主要作用是为 URL 变量提供默认值。
在这个示例中,@app.url_defaults
装饰器注册了一个名为 add_language_code
的函数,这个函数会在每次构造 URL 时执行。在这个函数中,我们为 language 变量提供了默认值 en
。具体来说,如果 URL 中没有 language 变量,Flask 会自动将其设置为 en
。
from flask import Flask, g
app = Flask(__name__)
@app.route('/user/<int:user_id>')
def show_user(user_id):
return 'User %d' % user_id
@app.url_defaults
def add_language_code(endpoint, values):
values.setdefault('language', 'en')
if __name__ == '__main__':
app.run()
在请求处理函数中,我们可以像平常一样使用 URL 变量。例如,在 /user/1 这个 URL 中,user_id 变量的值为 1,language 变量的值为 'en',可以在请求处理函数中使用。
需要注意的是,@app.url_defaults
装饰器的函数需要接受两个参数:endpoint 和 values。
endpoint 是请求处理函数的名称,values 是一个字典,包含了 URL 中的所有变量。
在函数中,我们可以根据需要为这些变量提供默认值。