2016-05-30 18 views
1

リダイレクト前に設定されたメッセージがフラッシュメッセージに表示されないという問題が発生しています。問題を再現するための簡単なプロジェクトを作成しました。リダイレクトフラッシュメッセージはSERVER_NAME設定ファイルの有無に関係なく表示されませんが、通常のフラッシュメッセージは常に表示されます。リダイレクト後フラスコフラッシュが機能しない

import sys 
import os.path 

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


class TestConfig: 
    DEBUG = True 
    SERVER_NAME = 'project-username.c9users.io' 

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


@app.route('/') 
def index(): 
    flash('This is a regular test flash') 
    return render_template('test.html') 


@app.route('/flash') 
def flash_it(): 
    flash('This is a redirect test flash') 
    return redirect(url_for('index')) 


app.run(host='0.0.0.0', port=8080) 

テンプレート:

{% for message in get_flashed_messages() %} 
{{ message }} 
{% endfor %} 

更新

私はcloud9インタフェースを介していたドメイン名をlocalhostを使用しての代わりに、コマンドラインからこれを呼び出そうとしました。それはうまくいった。

$ wget -q -O - "[email protected]" http://localhost:8080/flash 

This is a redirect test flash 

This is a regular test flash 

SERVER_NAME変数に正しい名前が設定されていますが、それでも機能しません。

+1

私はコピー/正確にあなたのコードとテンプレートを貼り付け、私はローカルホスト 'に行くときの両方点滅が現れてしまった:8080 /フラッシュ'。どのバージョンのPythonを使用していて、 '/ flash'にアクセスしていますか? –

+0

これはPython 3.4.3でのものです。あなたのコメントのために私は2.7.6と別のvirtualenvを作成し、同じ問題があります。これはFlask 0.10.1で行われます。そして、はい、私はアクセスしています/フラッシュ。 – bassburner

+2

関連するサーバー名が表示されます。更新されたオリジナルの投稿。 – bassburner

答えて

3

この問題はSERVER_NAMEに関連していることが判明しました。サブドメイン名を含むべきではありません。以下に設定を変更する

はそれがCloud9ドメイン名では動作します:

class TestConfig: 
    DEBUG = True 
    SERVER_NAME = 'project-username.c9users.io' 
関連する問題