You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flask无需指定路径即可访问login.html的原因及main.py代码含义求解

问题1:为何无需指定路径即可访问login.html

你当前是直接在本地通过浏览器打开login.html静态文件,此时浏览器走file://协议加载本地磁盘中的文件,完全不需要经过Flask服务处理,自然不需要在Flask代码中配置对应的访问路径、也不需要把文件放到Flask默认的templates模板目录。
你HTML中表单的action属性已经写死了提交地址为http://localhost:5000/login,所以只要你启动了Flask服务,点击本地打开的页面的提交按钮,就能正常把表单数据发送到Flask的对应接口。

如果你希望通过Flask服务托管这个页面,需要做两个修改:

  • 把login.html放到Flask项目根目录下的templates文件夹(没有就手动新建)
  • 在main.py中新增对应GET请求的路由:
from flask import render_template

@app.route('/login_page', methods = ['GET'])
def login_page():
    return render_template('login.html')

之后启动Flask服务,访问http://localhost:5000/login_page就能通过Flask服务加载到这个登录页面。

问题2:main.py代码逐行解释

  • @app.route('/login',methods = ['POST']):Flask的路由装饰器,作用是将URL路径/login和后续的login视图函数绑定,同时限定该路径仅接收POST类型的HTTP请求,其他类型的请求访问该路径会直接返回405方法不允许的错误。
  • def login()::定义/login路径对应的视图函数,Flask收到符合要求的/login请求时,会自动执行该函数内的逻辑。
  • uname=request.form['uname']:从POST请求携带的表单数据中,取出name属性为uname的输入框的值,赋值给uname变量,对应你HTML中用户名输入框的name="uname"配置。
  • passwrd=request.form['pass']:同理从表单数据中取出name属性为pass的密码输入框的值,赋值给passwrd变量。
  • if uname=="ayush" and passwrd=="google"::校验用户输入的账号密码是否匹配预设值ayush和google,两个条件同时满足才会执行后续的返回逻辑。
  • return "Welcome %s" %uname:账号密码校验通过后,给前端返回拼接了用户名的欢迎文本。

内容的提问来源于stack exchange,提问作者Dheeraj-Tech

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 09:45:03