Patrick's 데이터 세상
데이터 과학자를 위한 웹 개발 도구 Streamlit - 멀티페이지 본문
반응형
SMALL
앱 페이지에서 여러 페이지를 보여주고 싶을 때 페이징 처리를 진행합니다.
Streamlit에서는 멀티페이지(Paging) 처리를 위한 두 가지 주요 방식이 있으며, 상황에 따라 선택할 수 있습니다.
📁 pages 디렉터리
streamlit/
├── main.py # 진입점 페이지
└── pages/
├── 1_st.set_page_config.py
├── 2_st.columns.py
├── 3_st.container.py
├── 4_st.tabs.py
├── 5_st.expander.py
└── 6_st.empty.py
먼저 가장 간단하고 직관적인 방법입니다.
프로젝트 구조를 왼쪽과 같이 main 파일이 있는 디렉터리 위치에 pages로 각 페이지 관련 파일을 넣어둡니다.
main.py로 streamlit 앱을 실행하면, 자동으로 사이드바에 각 파일이 사이드바 탭으로 나타납니다.
- 페이지 이름과 순서 자동 지정: 파일 이름에 숫자 접두어를 사용하면 사이드바 순서를 제어할 수 있습니다.
- 페이지 유지보수 쉬움: 리소스 분리 및 새로운 페이지 추가가 편리합니다.
단점은 내비게이션 UI 커스터마이징이 어렵고, 페이지 아이콘·그룹화는 불가능합니다.
st.page_link 등을 이용해 수동 링크를 생성해야 합니다.
📁 st.Page + st.navigation
import streamlit as st
st.set_page_config(
page_title="레이아웃 구성 요소",
page_icon="🤖",
)
# 페이지 정의
p1 = st.Page("layout_pages/home.py", title="home", icon="🏠", default=True)
p2 = st.Page("layout_pages/st.set_page_config.py", title="st.set_page_config", icon="📄")
p3 = st.Page("layout_pages/st.columns.py", title="st.columns", icon="📄")
p4 = st.Page("layout_pages/st.container.py", title="st.container", icon="📄")
p5 = st.Page("layout_pages/st.tabs.py", title="st.tabs", icon="📄")
p6 = st.Page("layout_pages/st.expander.py", title="st.expander", icon="📄")
p7 = st.Page("layout_pages/st.empty.py", title="st.empty", icon="📄")
menu = {
"Pages": [p1, p2, p3, p4, p5, p6, p7],
}
pg = st.navigation(menu, position="sidebar", expanded=True)
pg.run()
페이지를 구성하는 두 번째 방법입니다.
이렇게 동일하게 main 파일과 디렉터리에 페이지 구성 파일을 넣어두고 이렇게 st.page로 만들어서 st.navigation에 순차적으로 넣어주면 넣은 순서대로 페이지를 구성할 수 있습니다.
- 유연성, 자유도 높음: .py 파일뿐 아니라 함수 콜러블도 페이지로 정의할 수 있습니다.
- 섹션/그룹화 가능: 딕셔너리 구조로 페이지 그룹을 만들거나 페이지별 아이콘, 제목 등을 세밀하게 지정할 수 있습니다.
- 내비게이션 위치 조정: 사이드바 또는 상단 바 위치를 조절가능하고, {"position":"hidden"}을 통해 기본 UI를 숨길 수도 있습니다.
- 공통 요소 유지 가능: 엔트리 파일에 위젯이나 헤더를 넣으면 모든 페이지에서 동일하게 사용됩니다.
✅ 정리
이 두 가지 방식을 기반으로 프로젝트에 맞는 구조를 선택하시면, Streamlit 앱을 간편하게 확장하고 유연하게 구성하실 수 있습니다.
반응형
LIST
'NLP Development > Streamlit' 카테고리의 다른 글
데이터 과학자를 위한 웹 개발 도구 Streamlit - RAG를 활용한 웹 검색 챗봇 데모페이지 시연 (2) | 2025.07.13 |
---|---|
데이터 과학자를 위한 웹 개발 도구 Streamlit - 상태 관리 & 상호 작용 (0) | 2025.07.13 |
데이터 과학자를 위한 웹 개발 도구 Streamlit - 레이아웃 (5) | 2025.07.10 |
데이터 과학자를 위한 웹 개발 도구 Streamlit - 소개 및 앱 구성 요소 (3) | 2025.06.23 |
Comments