2017-08-02 15 views
2

redirect(url_for())で値を渡すことが可能かどうか疑問に思っていました。フラスコ内のurl_forをリダイレクトする変数を渡す

Basicの例:私は自宅の機能を持っている:

@app.route("/") 
def home(msg=None): 
    return render_template("home.html", mgs=msg) 

は、どのように私は家関数にメッセージを渡すことができますか? redirect(url_for())

@app.route("/logout") 
def logout(): 
    logout_user() 
    return render_template('home.html', msg="logged out") 

:つまり 私はこれを行うことができますか?

この:?

@app.route("/logout") 
def logout(): 
    logout_user() 
    return redirect(url_for(('home', msg="logged out")) 

はちょうど私に取得/ MGSとURLを与える= 'ログアウト'。

私は、url_forが、それに渡される関数の名前に基づいてurlを生成していることを理解します。あなたはその関数に価値を渡すことができますか?

+0

総額(ただし、完全に非現実的ではない)方法は、セッション変数を使用することですが、それ以外に、番号:

{% with passed = get_flash_messages() %} {% if passed %} <!-- passed should contain 'logged out' --> {% endif %} 

も見ますそれはいけません。 – CodeLikeBeaker

+0

URLがその変数を期待している場合*できます。したがって、あなたのルートが "/ logout /:message"だった場合、それはうまくいくでしょうが、あなたのURLは "/ logout/logged out"となり、さらに恐ろしいものになります。 (ただし、セッションを使用することについてはまったく問題ありませんが、それはまさにそのためのものです) –

答えて

1

何を使用することができ、作業を行うためのテンプレートを使用します? home用のテンプレートで次に

flash("logged out") 
return redirect(url_for('home')) 

http://flask.pocoo.org/docs/0.12/patterns/flashing/

+0

これは動作するように見える、それについて読むつもりです。 thx – lciamp

+0

ETA:これは動作します。どうも – lciamp

0

いいえ、私はそうは思わないが、あなたのようなGETパラメータを使用することができます。

redirect('home?msg=You%20are%20loged%20in') 

との代わりに、あなたはフラッシュ変数についてJS

+0

ええ、私はテンプレートで渡された値を使用したかったのです。 GETを使って乱雑に思えます。 (ユーザーが何を言うかをページにすることができます)必要に応じてrender_templateを使用すると思います。 – lciamp

+0

私はここにいません。ページに記載されているテキストを変更すると、何が問題になりますか? –

+0

何も間違っていない、私はちょうどGETsを使用して回避しようとしていた – lciamp

関連する問題