2016-05-30 2 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 %} 

Update

Я пытался вызвать из командной строки, используя локальный вместо имени домена, который у меня есть через интерфейс Cloud9. И все получилось отлично.

$ 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. Из-за вашего комментария я создал еще один virtualenv с 2.7.6 и имел ту же проблему. Это с флягой 0.10.1. И да, я получаю доступ к/flash. – bassburner

+2

Оказывается, это связано с именем сервера. Обновлен оригинальный пост. – bassburner

ответ

3

Проблема оказывается связанной с SERVER_NAME. Он не должен содержать имя поддомена.

Изменение конфигурации к следующему делает работу с доменным именем Cloud9:

class TestConfig: 
    DEBUG = True 
    SERVER_NAME = 'project-username.c9users.io' 
Смежные вопросы