로그인 페이지 만들기

익숙한 화면이죠 ㅎㅎ 오늘은 인풋과 버튼을 이용해서 로그인 페이지를 만들어보겠습니다.
인풋은 아이디와 비밀번호 입력창이고, 버튼은 로그인 부분입니다
1. 아이디 및 비밀번호 생성
import streamlit as st
# 기본 페이지 제목
st.title("떼껄룩 러버 로그인 페이지")
# 아이디어와 비밀번호 입력칸 만들기
# 아이디 입력
user_id = st.text_input("아이디")
# 비밀번호 입력
password = st.text_input("비밀번호", type='password')
st.write("입력한 아이디", user_id)
st.write("입력한 비밀번호", password)
📌 text_input() 인자 설명
- 첫 번째 인자 → 레이블(Label): 입력칸 위에 표시되는 제목
: 위치 인자이므로 반드시 첫 번째에 입력해야 함 - 두 번째 인자 → 초기값(Default Value): 입력칸에 처음 표시되는 값
: 초기값은 반드시 넣을 필요 없음 (선택 사항)
실행을 하면 아래와 같은 페이지가 만들어집니다.

2. 로그인 버튼 생성
if st.button("로그인"):
st.write("로그인 버튼이 눌렸습니다!")

3. 입력값 검증(간단한 로그인 체크)
조건문(중첩if문)을 사용해서 구조를 설정했습니다.
- 중첩 id문 개념
더보기
파이썬에서는 id문 안에 또 if문을 넣을 수 있습니다.
if 조건A:
if 조건B:
실행문1
# 조건A와 조건B 둘 다 True일 때 실행
else:
실행문2
# 조건A는 True, 조건B는 False일 때 실행
- 조건A를 먼저 검사 → False면 내부는 아예 실행 안 함
- 조건A가 True일 때만 조건B를 검사
- 조건B가 True면 실행문1, 아니면 실행문2 실행
- 로그인 실행 흐름
더보기
if st.button("로그인"): # (조건A) 버튼 클릭 여부
if user_id == "admin" and password == "1234": # (조건B) 계정 확인
st.success("로그인 성공!")
else:
st.error("아이디 또는 비밀번호가 올바르지 않습니다.")
시나리오 1: 버튼 안 눌림
- st.button("로그인") → False
- 첫 번째 if문에서 막힘 → 아래 내용 전혀 실행 안 됨
시나리오 2: 버튼 눌림 + 아이디/비번 맞음
- st.button("로그인") → True
- 두 번째 if 실행: user_id == "admin" and password == "1234" → True
- st.success() 실행 → "로그인 성공!" 초록 박스 표시
시나리오 3: 버튼 눌림 + 아이디/비번 틀림
- st.button("로그인") → True
- 두 번째 if 실행: user_id == "admin" and password == "1234" → False
- else 실행 → st.error() → 빨간 박스 표시
if st.button("로그인"):
if user_id == "admin" and password == "1234":
st.success("로그인 성공!")
else:
st.error("아이디 또는 비밀번호가 올바르지 않습니다")
앞서 배운 함수에서 콜아웃 기억나시나요?
st.success()는 초록, st.error()는 빨강을 적용했습니다.

이제 st.session_state를 사용해서 로그인 상태 유지 기능을 추가해 볼건데요
그 전에 st.session_state가 뭔지 알아가도록 하겠습니다
다음글~~
'데이터 분석 > 03. streamlit' 카테고리의 다른 글
| 두번째 레슨, streamlit 문법 알아보기 (3) | 2025.08.09 |
|---|---|
| 첫번째 레슨, streamlit 실행 및 종료와 argument (3) | 2025.08.09 |
| streamlit으로 점심 추천 웹앱 만들기 (2) | 2025.08.07 |
| [Streamlit] BMI계산기 (8) | 2025.08.06 |