Flask中GET请求触发机制疑问:初始访问/login路由时GET请求如何发起?
关于Flask中初始GET请求发起的疑问解答
相关代码
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)
疑问解答
这其实是浏览器的默认行为哦!当你在浏览器地址栏直接输入http://localhost:5000/login,或者点击指向这个路由的普通链接时,浏览器会自动发起一个GET请求来获取该路由对应的页面内容——这是HTTP协议里浏览器访问网页的默认交互方式。
你的Flask路由@app.route('/login', methods=['GET', 'POST'])已经明确声明允许GET和POST两种请求方法,所以当浏览器第一次访问这个地址时,就会触发路由里的GET请求分支,执行render_template('name.html')渲染出表单页面。
而HTML表单里设置的method="post",只是规定了当你点击表单的「Submit」按钮时,浏览器会用POST方法把表单数据提交到该路由,这和初始访问时的GET请求是完全独立的两个操作:
- 初始访问:浏览器主动发起GET请求,目的是获取并展示页面
- 提交表单:用户操作后,浏览器按表单指定的POST方法发送表单数据
内容的提问来源于stack exchange,提问作者Ronaka Samaraweera
相关产品推荐
相关产品推荐

