Creating multipage apps using the pages/ directory
声明多页面应用的最可定制方法是使用Page and navigation。然而,Streamlit 还提供了一种无缝的方式来创建多页面应用,其中页面会自动识别并显示在应用侧边栏的导航小部件中。此方法使用pages/目录。
本页面假设您理解概述中介绍的页面术语。
App structure
当你使用pages/目录时,Streamlit通过目录结构和文件名来识别你的多页面应用中的页面。你的入口文件(你传递给streamlit run的文件)是你的应用的主页。当你在入口文件旁边有一个pages/目录时,Streamlit会将其中的每个Python文件识别为一个页面。以下示例有三个页面。your_homepage.py是入口文件和主页。
your_working_directory/
├── pages/
│ ├── a_page.py
│ └── another_page.py
└── your_homepage.py
像运行单页应用一样运行你的多页应用。将你的入口文件传递给streamlit run。
streamlit run your_homepage.py
只有pages/目录中的.py文件会被识别为页面。Streamlit会忽略pages/目录及其子目录中的所有其他文件。Streamlit还会忽略pages/子目录中的Python文件。
重要
如果你在应用程序中调用st.navigation(在任何会话中),Streamlit 将切换到使用更新的页面和导航多页面结构。在这种情况下,pages/目录将在所有会话中被忽略。除非你重新启动应用程序,否则你将无法恢复到pages/目录。
How pages are sorted in the sidebar
请参阅概述以了解Streamlit如何根据构成文件名的number、separator、identifier和".py"扩展名分配自动页面标签和URL。
入口文件总是首先显示。其余页面按以下方式排序:
- 带有
number的文件会出现在没有number的文件之前。 - 文件根据
number(如果有)排序,然后是label(如果有)。 - 当文件排序时,Streamlit 将
number视为实际数字而不是字符串。因此03与3相同。
此表显示了文件名及其对应标签的示例,按照它们在侧边栏中出现的顺序排序。
示例:
| 文件名 | 渲染标签 |
|---|---|
1 - first page.py | 第一页 |
12 monkeys.py | 猴子 |
123.py | 123 |
123_hello_dear_world.py | 你好,亲爱的世界 |
_12 monkeys.py | 12只猴子 |
提示
表情符号可以用来让你的页面名称更有趣!例如,一个名为🏠_Home.py的文件将在侧边栏中创建一个标题为“🏠 Home”的页面。在文件名中添加表情符号时,最好包含一个编号前缀,以便在终端中更容易自动完成。终端自动完成可能会被Unicode(表情符号的表示方式)搞混。
Notes and limitations
-
页面支持保存时运行。
- 当你在应用运行时更新页面时,这会导致当前正在查看该页面的用户重新运行。
- 当你在应用运行时更新页面时,应用不会自动为当前正在查看不同页面的用户重新运行。
-
当您的应用程序运行时,添加或删除页面会立即更新侧边栏导航。
-
st.set_page_config在页面级别工作。- 当你使用
st.set_page_config设置title或favicon时,这仅适用于当前页面。 - 当你使用
st.set_page_config设置layout时,该设置将在会话期间保持不变,直到通过另一个st.set_page_config调用进行更改。如果你使用st.set_page_config来设置layout,建议在所有页面上调用它。
- 当你使用
-
页面全局共享相同的Python模块:
# page1.py import foo foo.hello = 123 # page2.py import foo st.write(foo.hello) # 如果page1已经执行,这将输出123 -
页面共享相同的 st.session_state:
# page1.py import streamlit as st if "shared" not in st.session_state: st.session_state["shared"] = True # page2.py import streamlit as st st.write(st.session_state["shared"]) # 如果 page1 已经执行,这将写入 True
你现在对多页面应用有了扎实的理解。你已经学会了如何构建应用、定义页面以及在用户界面中导航页面。是时候创建你的第一个多页面应用了!🥳
还有问题吗?
我们的 论坛 充满了有用的信息和Streamlit专家。