首页 > 解决方案 > 我不明白为什么我的 Flask 代码没有连接到我的 HTTP 方法

问题描述

这是我的 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

标签: pythonhtmlvisual-studioflaskhttp-method

解决方案


几个错误:

  1. success在 post 的情况下有一个额外的空间。
  2. __main__没有正确对齐。

这是固定代码

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)

推荐阅读