st.query_params 提供了一个类似字典的接口,用于访问应用程序URL中的查询参数,并且自Streamlit 1.30.0版本起可用。它的行为与st.session_state类似,但有一个显著的例外,即应用程序URL中的键可能会重复。处理重复键需要特别注意,如下所述。

st.query_params 可以使用键和属性符号。例如,st.query_params.my_keyst.query_params["my_key"]。所有的键和值都将被设置为字符串并返回。当你写入 st.query_params 时,以 ? 为前缀的键值对会添加到你的应用程序URL的末尾。每个额外的键值对以 & 而不是 ? 为前缀。在多页面应用程序中导航时,查询参数会被清除。

例如,考虑以下URL:

https://your_app.streamlit.app/?first_key=1&second_key=two&third_key=true

上述URL中的参数将在st.query_params中可访问,如下所示:

{ "first_key" : "1", "second_key" : "two", "third_key" : "true" }

这意味着你可以在你的应用中这样使用这些参数:

# You can read query params using key notation if st.query_params["first_key"] == "1": do_something() # ...or using attribute notation if st.query_params.second_key == "two": do_something_else() # And you can change a param by just writing to it st.query_params.first_key = 2 # This gets converted to str automatically

当应用程序的URL中重复出现一个键时(?a=1&a=2&a=3),类似字典的方法将只返回最后一个值。在这个例子中,st.query_params["a"] 返回 "3"。要获取所有键作为列表,请使用下面显示的 .get_all() 方法。要设置重复键的值,请将值分配为列表。例如,st.query_params.a = ["1", "2", "3"] 生成本段开头给出的重复键。

st.query_params 无法获取或设置嵌入设置,如嵌入您的应用中所述。当尝试获取或设置它们的值时,st.query_params.embedst.query_params.embed_options 将分别引发 AttributeErrorStreamlitAPIException

清除应用程序URL中的所有查询参数。

函数签名[source]

st.query_params.clear()

返回

(None)

无描述

从字典或类似字典的对象中设置所有查询参数。

此方法主要面向希望在一次更新中控制多个查询参数的高级用户。要设置单个查询参数,请改用键或属性表示法。

此方法继承了st.query_params的限制,不能用于设置如嵌入您的应用中所述的嵌入选项。

为了处理重复的键,键值对中的值应该是一个列表。

注意

.from_dict() 并不是 .to_dict() 的直接逆操作,如果你在处理重复的键时。真正的逆操作是 {key: st.query_params.get_all(key) for key in st.query_params}

函数签名[source]

st.query_params.from_dict(params)

参数

params (dict)

用于替换当前查询参数的字典。

示例

import streamlit as st

st.query_params.from_dict({"foo": "bar", "baz": [1, "two"]})

获取与给定键关联的所有查询参数值的列表。

当键在URL中作为查询参数重复时,此方法允许获取所有值。相比之下,类似字典的方法在URL中键重复时只能检索到最后一个值。

函数签名[source]

st.query_params.get_all(key)

参数

key (str)

URL中查询参数的标签。

返回

(List[str])

与给定键关联的值的列表。可能返回零个、一个或多个值。

获取所有查询参数作为字典。

此方法主要用于内部使用,大多数情况下不需要使用。st.query_params 默认返回一个继承自 dict 的对象。

当URL中的查询参数重复出现时,此方法将仅返回每个唯一键的最后一个值。

函数签名[source]

st.query_params.to_dict()

返回

(Dict[str,str])

应用程序URL中当前查询参数的字典。

forum

还有问题吗?

我们的 论坛 充满了有用的信息和Streamlit专家。