Flask中GET请求的触发方式及原理解析
Flask中GET请求的触发逻辑解析
场景回顾
先看你给出的代码示例:
HTML模板(name.html):
<!DOCTYPE html> <html> <body> <h3>Enter Your Name</h3> <form method="post"> <input type="text" name="username" required> <br><br> <input type="submit" value="Submit"> </form> </body> </html>
Flask后端代码:
from flask import Flask, request, render_template app = Flask(__name__) @app.route('/login', methods=['GET', 'POST']) def login(): if request.method == 'POST': name = request.form['username'] return f"Hello {name}, POST request received" return render_template('name.html') if __name__ == '__main__': app.run(debug=True)
问题解答
- GET请求的触发方式
当你在浏览器地址栏输入http://localhost:5000/login并回车,或者点击指向该路径的普通链接时,浏览器会自动发起GET请求。这是HTTP协议的默认行为——只要你要获取某个页面资源,就会用GET请求来拉取。
你的Flask代码里,@app.route('/login', methods=['GET', 'POST'])明确允许该路径接收GET和POST两种请求,所以当浏览器发起GET请求时,代码会执行return render_template('name.html'),返回表单页面。
- 初始访问'/login'为何是GET请求
HTML表单里设置的method="post",只定义了表单提交时会发起POST请求,和初始加载页面的请求无关。
初始访问/login时,你只是让浏览器去获取这个路径对应的页面资源,这个过程没有提交表单的操作,所以浏览器遵循HTTP默认规则,用GET请求来拉取表单页面。只有当你在表单里输入内容并点击Submit按钮时,才会触发表单定义的POST请求,把数据发送给后端。
内容的提问来源于stack exchange,提问作者Ronaka Samaraweera
相关产品推荐
相关产品推荐

