无法为终结点"user_page"构建 URL。您是否忘记指定值 ['name']?



我在Flask中编写了小代码,当我尝试运行服务器并输入登录名和密码时,它给了我错误名称:werkzeug.routing。无法为端点"user_page"构建url。您是否忘记指定值['name']?

我怎样才能解决这个问题?

瓶:

from flask import Flask, url_for, request, redirect, render_template
app = Flask(__name__)
@app.route('/page/<name>')
def user_page(name):
return f"Welcome {name}"
@app.route('/error')
def error():
return f"Sorry, you enter wrong username/password"
@app.route('/login', methods=['POST', 'GET'])
def login_page():
password = request.form['usrp']
username = request.form['usrn']
if password == '123' and username == 'anon':
if request.method == ['POST']:
return redirect(url_for('user_page', name=username))
else:
username = request.args.get('usrn')
return redirect(url_for('user_page', name=username))
else:
return redirect(url_for('error'))
if __name__ == '__main__':
app.run(debug=True)

HTML:

<html>
<head>
<title>TEST SITE</title>
</head>
<body>
<div>
<form action="http://localhost:5000/login" method="post">
<p>Enter your name: <input type="text" name="usrn"></p>
<p>Enter your password: <input type="password" name="usrp"></p>
<p><input type="submit" value="submit"></p>
</form>
</div>
</body>
</html>

问题不在于重定向或url_for函数,问题在于您传递给参数'name'的值。如果在尝试使用url_for函数之前打印用户名,您将看到用户名的值为'None'。

所以要解决你的问题,确保'username'的值在传递给url_for函数时不是'None' !

相关内容

最新更新