Flask框架路由重定向失败无法跳转至/success路径问题求助
问题根源
/success路由仅允许POST请求,但Flask的redirect函数默认触发GET请求,请求方法不匹配导致无法进入对应路由,所以看不到success路由里的print输出,浏览器侧实际会返回405 Method Not Allowed错误。
修复步骤
1. 修改路由配置
修改application.py中/success路由的允许方法,同时建议用url_for生成重定向地址,避免硬编码路径出错:
# 顶部如果没导入对应依赖,补充:from flask import Flask, request, render_template, redirect, url_for @app.route("/success", methods=["GET"]) def success(): print("Please work") return render_template("success.html", registrants = REGISTRANTS) # 同时把index函数里的重定向语句改成 return redirect(url_for('success'))
2. 修复success.html的两个小问题
- 第一行补充继承layout的声明,否则不会复用基础布局
- 删除未传参的
hello, {{name}}. Thanks for Registering for {{sport}}!行,如果你想显示当前注册用户的信息,可以在重定向时通过查询参数传值,或者用session存储,修改后的参考代码如下:
{% extends "layout.html" %} {% block body %} <h1>Registrants</h1> <table style="border: 2px solid black"> <thead> <tr style="border: 2px solid black"> <th style="border: 2px solid black">Name</th> <th style="border: 2px solid black">Sport</th> </tr> </thead> <tbody> {% for name in registrants %} <tr style="border: 2px solid black"> <td style="border: 2px solid black">{{name}}</td> <td style="border: 2px solid black">{{registrants[name]}}</td> </tr> {% endfor %} </tbody> </table> {% endblock %}
修改完成后提交表单就能正常跳转到success页面,也能看到对应print输出。
内容的提问来源于stack exchange,提问作者Nisarg Kudgunti
相关产品推荐
相关产品推荐

