重定向后烧瓶闪存不起作用

Posted

技术标签:

【中文标题】重定向后烧瓶闪存不起作用【英文标题】:Flask flash not working after redirect 【发布时间】:2016-09-28 16:11:06 【问题描述】:

我遇到了一个问题,即 Flash 消息未显示重定向前设置的消息。我创建了一个简单的项目来重现该问题。无论有没有 SERVER_NAME 配置文件,重定向 Flash 消息都不会显示,但常规 Flash 消息始终显示。

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 %

更新

我尝试使用 localhost 而不是我通过 cloud9 接口拥有的域名从命令行调用它。而且效果很好。

$ wget -q -O - "$@" http://localhost:8080/flash

This is a redirect test flash

This is a regular test flash

我已将 SERVER_NAME 变量设置为正确的名称,但它仍然不起作用。

【问题讨论】:

我完全复制/粘贴了您的代码和模板,当我转到localhost:8080/flash 时,两个闪光灯都出现了。您使用的是什么版本的 Python,并且您正在访问/flash 这适用于 Python 3.4.3。由于您的评论,我用 2.7.6 创建了另一个 virtualenv 并且遇到了同样的问题。这是 Flask 0.10.1。是的,我正在访问 /flash。 原来它与服务器名称有关。更新了原始帖子。 【参考方案1】:

问题原来与 SERVER_NAME 有关。它不应包含子域名。

将配置更改为以下使其适用于 Cloud9 域名:

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

【讨论】:

以上是关于重定向后烧瓶闪存不起作用的主要内容,如果未能解决你的问题,请参考以下文章

登录后重定向到推荐人不起作用

将站点重定向到https后,站点IP重定向不起作用

UseQuery 在通过 apollo react 使用 useMutations 重定向后不起作用

PHP重定向不起作用

CodeIgniter 4 重定向功能不起作用

CORS XHR 重定向不起作用