Python / Flask:为什么程序会收到GET请求而不是POST请求?

时间:2018-08-21 07:34:51

标签: flask

运行此程序时,输出“调用了Get方法”
为什么是html代码1.不运行2.返回get请求(默认)
并在输入数据时不返回发布请求? html似乎根本没有运行。

这是HTML文件中具有输入内容的部分:

<div>
      <h2>Welcome</h2>
      <form action="{{ url_for('login') }}" method="POST">
        <input type="text" id="user" name="user" placeholder="Please enter username">
        <button>Submit</button>
        </form>
</div> 

这是相关的.PY文件的一部分:

@app.route('/', methods=['GET', 'POST'])
    def login():
        if request.method == 'GET':
            return "Get method was called"  
        else:  
            user = request.form.get('user')
            return redirect(url_for('home'))
        return render_template("login.html", user = user) 

我是python的新手,所以我不知道该如何开始寻找错误。

1 个答案:

答案 0 :(得分:0)

它不起作用,因为需要路由和函数来调用html表单。否则,该表单将永远不会被调用。第二条路线需要一个新的html文件。  该代码应显示为:

from flask import Flask, render_template, request, url_for
app = Flask(__name__, template_folder="./templates")
@app.route('/login')
def login():
    return render_template("login.html")
@app.route('/home', methods=['GET', 'POST'])
def home():
        if request.method == 'GET':
            return "Get method was called"  
        else:  
            user = request.form.get('user')
            return render_template("home.html", user = user)

login.html:

<form action="{{ url_for('home') }}" method="post">
                <input type="text" id="user" name="user" placeholder="Please enter username">
                 <button>Submit</button>
 </form>

home.html:

<h2 style='color:blueviolet;'>User: {{user}}</h2>