Skip to content

建立 2026-09-14 更新 2026-09-14

多頁應用

App 變大之後,把功能拆成多頁會比較好維護。官方現在建議用 st.Pagest.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() 之前。

分組與動態選單

pg = st.navigation({
    "分析": [overview, sales],
    "系統": [settings],
})

登入後才顯示某些頁:把要給 st.navigation 的清單依 st.session_state 過濾即可。官方說明見 st.Page and st.navigation

舊的 pages/ 資料夾

在入口檔旁邊建 pages/,裡面每個 .py 自動變成一頁。現在還能用,但無法輕鬆控制權限與排序。新專案請優先用 st.navigation