如何使用烧瓶中的重定向将一些字符串从一个URL传递到另一个URL

时间:2014-06-17 08:41:15

标签: python redirect flask url-routing

我有@app.route('/<data_select>'),可以接受'http://0.0.0.0:5000/valid_data' or 'http://0.0.0.0:5000/invalid_data'之类的网址。我有一个@app.route('/update_data', methods=['GET','POST'])来处理get和set请求。

我想通过重定向调用将一些字符串从update_data-&gt; post请求传递给select_data-get请求。我在这里放了我的代码

@app.route('/<data_select>')
def select_data(data_select):
    form = data() 
    return render_template('data.html', form= form)

@app.route('/update_data', methods=['GET','POST'])
def update_data():
    form = update_data() 
    if request.method == 'GET':
        return render_template('update_data.html',form=form)

    if request.method == 'POST':
        messages = "want to pass this string to select_data()"
        return redirect(url_for('valid_data',  messages = messages))

请给我一些想法

1 个答案:

答案 0 :(得分:0)

要在烧瓶中显示消息,请使用flash

文档中的示例比我更好地解释了它:

from flask import Flask, flash, redirect, render_template, \
     request, url_for

app = Flask(__name__)
app.secret_key = 'some_secret'

@app.route('/')
def index():
    return render_template('index.html')

@app.route('/login', methods=['GET', 'POST'])
def login():
    error = None
    if request.method == 'POST':
        if request.form['username'] != 'admin' or \
                request.form['password'] != 'secret':
            error = 'Invalid credentials'
        else:
            flash('You were successfully logged in')
            return redirect(url_for('index'))
    return render_template('login.html', error=error)

if __name__ == "__main__":
    app.run()

确保设置密钥(app.secret_key),因为闪存使用会话,并且需要密钥来加密cookie。

在模板中:

<!doctype html>
<title>My Application</title>
{% with messages = get_flashed_messages() %}
  {% if messages %}
    <ul class=flashes>
    {% for message in messages %}
      <li>{{ message }}</li>
    {% endfor %}
    </ul>
  {% endif %}
{% endwith %}
{% block body %}{% endblock %}