0

app = Flask(__name__)
#A basic flask function
@app.route('/')
def welcome():
    return "2+2"
    
#Building URL Dynamically
@app.route('/marks/<int:num>')
def dynamic(num):
    if num>95:
        return "The Student has got {} and got A+ grade".format(num)
    elif num <95:
        return "Alas, Student had got {} marks and got A grade".format(num)

@app.route('/dyna_url/<int:num1>')
def dynamical(num1):
    if num1<40:
        return "Alas, Student had failed in exam, with score {}".format(num1)

    elif num1 >=40 and num1<=90:
        return "The Student has passed in exam, with score {}".format(num1)

    elif num1 >90:
        return redirect(url_for("marks",num= num1))


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

我无法使用 "return redirect(url_for("marks",num= num1))" 语句重定向到上述函数。

出现错误 - “werkzeug.routing.BuildError: 无法为端点‘marks’ 的值 [‘num’] 构建 url。你的意思是‘静态’吗?”

4

1 回答 1

1

我注意到您没有创建任何名为“标记”的 Flask 路由。当我们使用 url_for 函数时,它会为引号中给出的函数创建一个 URL。

因此,如果我们使用 url_for("dynamic", num = 90) ,它会使用为名为“dynamic”的函数((来自装饰器 @app.route("/marks/<int:num>" )) 即 /marks/90 。

使用 url_for 时,我们必须指定我们正在使用其路径的函数,而不是我们要将其重定向到的路径。

你可以使用这个

elif num1 > 90:
    return redirect(f"/marks/{num1}"))

或者

elif num1 > 90:
    return redirect(url_for("dynamic" , num= num1))
于 2021-10-17T03:13:39.477 回答