多頁應用
App 變大之後,把功能拆成多頁會比較好維護。官方現在建議用 st.Page 與 st.navigation,比舊的 pages/ 資料夾更有彈性:可控制順序、圖示、依登入狀態顯示不同頁。
推薦寫法
入口檔(streamlit run 的那個檔)當路由器:
# streamlit_app.py
import streamlit as st
overview = st.Page("overview.py", title="總覽", icon="📊")
sales = st.Page("sales.py", title="銷售", icon="🛒")
settings = st.Page("settings.py", title="設定", icon="⚙️")
pg = st.navigation([overview, sales, settings])
pg.run()
各頁仍是一般 Python 檔,裡面照常寫 st.title()、Widget。入口檔每次重跑都會執行,所以共用的初始化(例如資料庫連線放進 Session State)可以寫在 pg.run() 之前。
分組與動態選單
登入後才顯示某些頁:把要給 st.navigation 的清單依 st.session_state 過濾即可。官方說明見 st.Page and st.navigation。
舊的 pages/ 資料夾
在入口檔旁邊建 pages/,裡面每個 .py 自動變成一頁。現在還能用,但無法輕鬆控制權限與排序。新專案請優先用 st.navigation。