【问题标题】:I don't get why my Flask Code isn't connecting to my HTTP method我不明白为什么我的 Flask 代码没有连接到我的 HTTP 方法
【发布时间】: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


【解决方案1】:

几个错误:

  1. success 中有一个额外的空格,用于发帖。
  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)

【讨论】:

    猜你喜欢
    • 2022-12-18
    • 1970-01-01
    • 2022-08-08
    • 1970-01-01
    • 2023-04-01
    • 2016-12-07
    • 2020-06-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多