处理表单提交时 flash 调用和重定向没有生效

from markupsafe import escape
from flask import Flask
from flask import Flask,render_template

app = Flask(__name__)

#flash功能
#app.config['TESTING'] = True
#app.config['SECRET_KEY'] = 'devqw1'
#flsh消息 设置签名所需的密钥#处理提交表单post, 创建电影条目

from flask import request,url_for, redirect, flash

@app.route('/', methods=['GET', 'POST'])
def create_index():
    if request.method == 'POST':  # 判断是否是 POST 请求
        # 获取表单数据
        title = request.form.get('title')  # 传入表单对应输入字段的 name 值
        year = request.form.get('year')
        # 验证数据
        if not title or not year or len(year) > 4 or len(title) > 60:
            flash('Invalid input.')  # 显示错误提示
            return redirect(url_for('index'))  # 重定向回主页
        # 保存表单数据到数据库
        movie = Movie(title=title, year=year)  # 创建记录
        db.session.add(movie)  # 添加到数据库会话
        db.session.commit()  # 提交数据库会话
        #flash('Item created.')  # 显示成功创建的提示
        return redirect(url_for('index.html'))  # 重定向回主页

    movies = Movie.query.all()
    return render_template('index.html', movies=movies)

python3.7 flask 2.1.2
添加表单成功

添加 电影的 成功,没有显示消息flash–不显示弹窗, 没显示index.html 页面

下次麻烦正确格式化代码(参考置顶帖)。

你的代码里有两个问题:

#flash(‘Item created.’) # 显示成功创建的提示
return redirect(url_for(‘index.html’)) # 重定向回主页
  • flash 调用被你注释掉了
  • 重定向调用里,url_for 需要传入的视图函数的名称(即 index),而不是模板文件名(index.html

注意看你的终端/命令行输出,会有错误提示告诉你哪里出了问题,下次可以尝试根据错误提示解决问题。

下次提问麻烦一并把错误输出贴出来。另外遇到问题可以先尝试和教程的代码以及示例程序进行对比。