【问题标题】:Flask - Pass Variables From Redirect to render_templateFlask - 将变量从重定向传递到 render_template
【发布时间】:2014-04-12 03:49:05
【问题描述】:

我有一个关于重定向到呈现模板的函数的问题。我有两个功能:

@user.route('/register', methods=['GET', 'POST'])
def register():
    if request.method == 'GET':
        return render_template('register.html')
    email = request.form['email']
    if User.query.filter(User.email == email).first() is not None:
        flash('Account already exists for this email address!')
        return redirect(url_for('user.login'))

@user.route('/login', methods=['GET', 'POST'])
def login():
    if request.method == 'GET':
        return render_template('login.html')
    return "Hello"

在第一个函数中,通过return redirect(url_for('user.login')) 行,我想通过该重定向传递电子邮件变量,因此我可以在第二个函数中让render_template 在HTML 页面上显示该变量。我尝试了以下方法:

return redirect(url_for('user.login', defaultEmail=email))

在第一个函数中和

return render_template('login.html', defaultEmail=email))

但它给了我NameError: global name 'email' is not defined。我该怎么做呢?

【问题讨论】:

    标签: python redirect flask


    【解决方案1】:

    url_for 应该通过查询字符串传递email。它可以通过login 作为request.args 的一部分访问。

    email = request.args.get('defaultEmail')
    

    【讨论】:

    • 太好了,非常感谢!在我的 jinja 模板中,我检查了 {% if defaultEmail %} 以查看该变量是否存在,然后再将其加载到我的模板中。
    猜你喜欢
    • 2016-09-12
    • 2017-06-12
    • 1970-01-01
    • 1970-01-01
    • 2021-12-30
    • 1970-01-01
    • 1970-01-01
    • 2015-03-20
    • 1970-01-01
    相关资源
    最近更新 更多