我如何一次将变量传递给所有烧瓶路线?

How do i pass a variable to all flask routes once?

所以我有这个 Flask 应用程序,我需要将特定用户传递给所有路由,因为应用程序中的所有页面都需要特定用户来呈现模板。我不想像往常一样通过用户

return render_template('index.html',user=user)

因为我必须对 render_templates 中的所有路线重复同样的事情。 请问我该怎么做?

您可以通过使用以下实现创建自定义呈现模板函数来实现

from flask import render_template as real_render_template
from yourapp import user  # Import the user variable or set it

def render_template(*args, **kwargs):
    return real_render_template(*args, **kwargs, user=user)

也可以通过functools.partial:

完成
from flask import render_template as real_render_template
from yourapp import user  # Import the user variable or set it
from functools import partial

render_template = partial(real_render_template, user=user)

如果你想发送一个变量给所有routes/pages/templates。你可以在 flask

中使用会话
from flask import Flask,session
[...]
session['x'] = user

现在您可以在代码的任何地方使用它,使用会话的模板['x']

在模板中

{{session['x']}}