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

Python Flet中如何拆分路径与查询参数?路由匹配参数分离问题

解决Flet中路由查询参数分离与匹配问题

问题核心

当访问带查询参数的路由(如/page1?test=123)时,page.route是包含查询参数的完整字符串,导致你的match "/page1"匹配失败,无法执行后续获取page.query的代码。同时page.path是Flet提供的、自动剥离查询参数的路径字符串,可以直接用于路由匹配。

修正方案1:使用page.path进行路由匹配

page.path会自动忽略?后的查询参数,直接返回纯路径部分,适合用于match匹配:

import flet as ft
import flet_fastapi


async def main(page: ft.Page):
    async def route_change(route):
        page.views.clear()
        # 改用page.path做匹配,自动剥离查询参数
        match page.path:
            case "/page1":
                page.views.append(ft.View("/page1", [
                    ft.Text("page1")
                ]))

                print("---")
                # page.query是解析好的参数字典,直接通过key获取值
                print(page.query.get("test"))
                print("---")

    def view_pop(view):
        page.views.pop()
        top_view = page.views[-1]
        page.go(top_view.route)

    page.on_route_change = route_change
    page.on_view_pop = view_pop
    await page.go_async(page.route)

app = flet_fastapi.app(main)

修正方案2:手动拆分page.route获取纯路径

如果坚持使用page.route,可以手动拆分字符串剥离查询参数:

async def route_change(route):
    page.views.clear()
    # 拆分路由字符串,取?前的纯路径部分
    base_route = page.route.split('?')[0]
    match base_route:
        case "/page1":
            page.views.append(ft.View("/page1", [
                ft.Text("page1")
            ]))

            print("---")
            print(page.query.get("test"))
            print("---")

补充说明

  • page.query是Flet自动解析后的字典,只要访问的URL包含?key=value格式的参数(如http://localhost:8000/page1?test=hello),就能直接通过page.query.get("key")获取对应的值。
  • 确保跳转或访问的URL格式正确,查询参数需以?开头,多个参数用&分隔(如/page1?test=hello&name=alex)。

内容的提问来源于stack exchange,提问作者Alexander

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 01:05:02