在 Flask 应用程序的多个页面中从服务器获取数据

Fetching data from server in multiple pages of Flask application

我将 Python 与 Flask 和 Jinja2 一起使用,并且我正在尝试实现侧边栏。在 HTML 页面中,我得到了这个:

{% include "sidebar.html" %}

我想要的侧边栏文件是有一个最新的用户块。为此,我需要从服务器获取 sidebar.html 文件的结果。但是我应该在 python 文件中的什么地方编写代码呢?

实现此功能的方法是在 python 端创建一个 Jinja 变量:

app = Flask(__name__)

app.jinja_env.globals.update({
  'latest_users': get_latest_users()
})

def get_latest_users() {
  return ['Mark', 'Jane', 'Sally']
}

现在可以从任何 Jinja 模板访问变量 latest_users,只需执行以下操作即可:

{% for user in latest_users %}
  <p>{{ user }}</p>
{% endfor %}

您可以将变量传递给模板。当您使用 include 时,您的变量仍然可以在此包含的部分中使用:

@app.route('/')
def index():
    users = ['user1', 'user2']
    debug = False
    render_template('index.html', users=users, debug=debug)

# index.html
{% include "sidebar.html" %}

#sidebar.html
{% for user in users %}
  <p>{{ user }}</p>
{% endfor %}
{{debug}}