st.query_params
st.query_params 提供了一个类似字典的接口,用于访问应用程序URL中的查询参数,并且自Streamlit 1.30.0版本起可用。它的行为与st.session_state类似,但有一个显著的例外,即应用程序URL中的键可能会重复。处理重复键需要特别注意,如下所述。
st.query_params 可以使用键和属性符号。例如,st.query_params.my_key 和 st.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
Repeated keys
当应用程序的URL中重复出现一个键时(?a=1&a=2&a=3),类似字典的方法将只返回最后一个值。在这个例子中,st.query_params["a"] 返回 "3"。要获取所有键作为列表,请使用下面显示的 .get_all() 方法。要设置重复键的值,请将值分配为列表。例如,st.query_params.a = ["1", "2", "3"] 生成本段开头给出的重复键。
Limitation
st.query_params 无法获取或设置嵌入设置,如嵌入您的应用中所述。当尝试获取或设置它们的值时,st.query_params.embed 和 st.query_params.embed_options 将分别引发 AttributeError 或 StreamlitAPIException。
| 函数签名[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中当前查询参数的字典。 |
还有问题吗?
我们的 论坛 充满了有用的信息和Streamlit专家。