如何在PyWebIO框架中获取当前请求的URL
PyWebIO获取当前请求URL解决方案
核心实现方法
你之前调用pywebio.session.info未获取到目标数据,是因为没有指定对应的url字段,可按以下两种方案实现:
方案1:调用session内置字段(推荐,PyWebIO 1.6及以上版本适用)
直接读取info.url属性即可拿到完整的当前请求URL:
from pywebio.session import info # 在会话处理函数内调用 current_url = info.url
除了完整URL外,你还可以按需获取相关拆分字段:
info.origin:站点源地址,例:http://localhost:8080info.path:URL路径部分,例:/test
方案2:执行前端JS获取(全版本兼容)
如果使用的是旧版本PyWebIO,没有内置info.url字段,可以直接调用eval_js执行前端原生JS获取地址:
from pywebio.session import eval_js current_url = eval_js("window.location.href")
可运行完整示例
from pywebio import start_server from pywebio.session import info, eval_js from pywebio.output import put_text def main(): # 方案1获取URL put_text("通过session.info获取的完整URL:", info.url) # 方案2获取URL put_text("通过前端JS获取的完整URL:", eval_js("window.location.href")) # 相关衍生字段 put_text("站点源地址:", info.origin) put_text("URL路径:", info.path) if __name__ == '__main__': start_server(main, port=8080, debug=True)
注意事项
- 所有获取URL的接口必须在PyWebIO的会话处理函数内部调用,不能在脚本顶层直接执行,否则会抛出上下文错误
- 若PyWebIO以Flask、Django等后端框架集成模式运行,以上两种方案依然有效,无需额外调用后端框架本身的请求对象获取地址
内容的提问来源于stack exchange,提问作者raka
相关产品推荐
相关产品推荐

