python Flash消息在Flask中不起作用

jq6vz3qz  于 2023-06-04  发布在  Python
关注(0)|答案(3)|浏览(282)

我一直无法让闪光灯功能在 flask 中工作。这是我的代码。

#!venv/bin/python3
from flask import Flask, flash

app = Flask(__name__)
app.config['SECRET_KEY'] = '12345'

@app.route('/')
def index():
    flash('Hi')
    return 'Hello'

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

我期望这会闪现一条消息说嗨,但当我加载页面时,没有出现闪光框。我不明白什么?

xxls0lw8

xxls0lw81#

我认为主要的问题是你返回的是一个字符串,而不是一个处理flash并将其转换为显示消息的render_template。Check out this documentation code here for an example of how to handle flashes
所以我建议尝试:return render_template('index.html')
然后使用index.html文件设置处理flash消息的代码。我有一种感觉,就像您在这里所做的那样,如果没有代码可以理解flash的地方,那么只返回一个字符串将给予一个null结果。

njthzxwz

njthzxwz2#

#!venv/bin/python3
    from flask import Flask, flash, redirect
    
    app = Flask(__name__)
    app.config['SECRET_KEY'] = '12345'
    
    @app.route('/')
    def index():
        flash('Hi')
        return redirect('index.html')
    return render_template('index.html')
    
    if __name__ == '__main__':
        app.run()

ou可以做以下更改在您的代码导入重定向和重定向到任何html页面显示 Flink 的消息。在本例中,在index.html和index.html页面中,您必须使用jinja模板来获取flash消息并将其显示在页面中,因为我们使用get_flashed_messages()
在index.html文件中添加以下代码

<body>
      {% for mesg in get_flashed_messages() %}
      <h1>{{ mesg }}</h1>
      {% endfor %}
    </body>
xmjla07d

xmjla07d3#

这个问题已经问了一段时间了。我会把我的答案贴在这里,因为我不知何故得到了这个问题。
正如Miguel Grinberg在“Flask Web开发:使用Python开发Web应用程序”:
调用flash()不足以获得显示的消息;应用程序使用的模板需要呈现这些消息。
因此,任何有同样问题的人,只要确保您将get_flashed_messages()函数添加到模板中,然后显示一条消息即可。您可以查看以下内容作为参考:
Python Flask flash not working correctly
当然还有上面提到的米格尔·格林伯格的书第四章。
希望这会有帮助。

相关问题