flask:在视图函数间传递参数

2 投票
1 回答
5047 浏览
提问于 2025-04-18 02:43

我该如何在Flask的不同视图之间传递变量呢?

补充说明:为了说明这个问题,假设我在user()函数中有一个叫做id的变量。这个变量是局部的,所以在user_add()函数中是看不到的。有办法以一种好的方式把这个值传递给user_add,同时又不影响它的局部性吗?

我在视图中有以下代码:

@app.route('/users', methods=['GET', 'POST'])
def user():
    ...
    var = setvar()
    ---
    return render_template('users.html')

@app.route('/users/add', methods=['GET', 'POST'])
def user_add():
    if request.method == 'POST':
        ...
        var = #somehow get id here
        ---
        return 'user added'

我正在向“/user/add”发送一个ajax的POST请求。

$.ajax({
    ...
    type: "POST"
    url: "/user/add"
    data: data,
    ...
});

补充说明:为了美观,把ID改成了var。

1 个回答

7

我不太确定具体的使用场景是什么,但你可以看看Sessions

你可能可以这样做:

from flask import session

@app.route('/users', methods=['GET', 'POST'])
def user():
    ...
    session['var'] = setvar()
    ---
    return render_template('users.html')

@app.route('/users/add', methods=['GET', 'POST'])
def user_add():
    if request.method == 'POST':
        ...
        var = session['var']
        ---
        return 'user added'

建议你查看一下文档,确保你使用得正确。上面的内容只是为了说明基本概念。

撰写回答