【问题标题】:flask: passing parameters across view functionsflask:跨视图函数传递参数
【发布时间】:2014-04-14 20:10:40
【问题描述】:

如何在烧瓶中的视图之间传递变量

编辑:出于说明目的,假设我在 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 帖子

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

编辑:为了美观,将 ID 更改为 var

【问题讨论】:

  • 不要覆盖内置的id() 函数。编辑:对不起,意思是 id。
  • 我认为你的意思是卑鄙的身份证!这只是一些示例代码,而不是我使用的实际代码
  • 另外,setid() 的目的是什么?当您使用user_add() 添加用户时,数据库不应该为您生成id 还是出于其他目的id
  • 请展示实际代码,因为这没什么意义。
  • 这个 id 用于其他目的而不是数据库,你对 ID 概念很感兴趣!

标签: python ajax flask


【解决方案1】:

我不确定确切的用例是什么,但不妨看看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'

请查看文档以确保您正确使用它。以上只是为了说明基本概念。

【讨论】:

  • 这可行,但它使用会话 cookie。有没有办法不通过客户端传递变量?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-08
  • 1970-01-01
  • 2021-10-01
  • 2017-04-18
  • 1970-01-01
相关资源
最近更新 更多