【发布时间】:2020-07-14 12:51:11
【问题描述】:
这是我的 Flask 代码,它应该打开另一个页面,欢迎从我的 html 代码登录的用户
from flask import Flask, redirect, url_for, request,render_template
app = Flask(__name__)
@app.route('/')
def home():
return render_template('login.html')
@app.route('/success/<name>')
def success(name):
return ('Welcome %s' % name)
@app.route('/login', methods = ['POST','GET'])
def login():
if request.method == 'POST':
user = request.form['nm']
return (redirect(url_for(' success' , name = user)))
else:
user = request.args.get('nm')
return (redirect(url_for('success', name = user)))
if __name__ == '__main__':
app. run(debug = True)
这是我的 html 代码
<html>
<body>
<form action="http://localhost:5000/login" method="post" >
<p>Enter Name: </p>
<p><input type = "text" name = "nm"/></p>
<p><input type = "submit" value="submit" /></p>
</form>
</body>
</html>
html 代码在终端中给出了这个错误
ERROR:get_updates_processor.cc(258)] PostClientToServerMessage() 在 GetUpdates 期间失败,出现错误 2
【问题讨论】:
-
您似乎随机插入了空格。如果没有更大的堆栈跟踪,我最好的猜测是
url_for(' success' , name = user))失败是因为'success'中有额外的空间。另一个例子是app .run()- 我很惊讶这不是语法错误。 -
@danuker 关于
app .run():我也对此感到惊讶,更重要的是发现这是valid syntax。尽管在 OP 的代码块中,父if语句被错误地放置在login函数中。只有使用python(而不是flask run或WSGI 服务器)启动时才会注意到此错误。 -
是的,问题出在“if name = main”的缩进上,现在可以正常使用了
标签: python html visual-studio flask http-method