2024. 11. 9. 16:20ㆍ카테고리 없음
아주 간단한 소개팅 웹앱의 기초를 Jupyter Notebook으로 구현할 수 있습니다.
여기서는 Flask를 이용하여 기본적인 웹 서버를 구성하고, 간단한 가입/채팅 기능을 제공합니다.
Jupyter Notebook에서는 셀 단위로 실행하며, 서버는 노트북에서 실행한 채로 브라우저에서 테스트합니다.
예제: Flask를 활용한 초간단 웹앱
이 앱은 아래 기능을 포함합니다:
1. 사용자 가입 및 로그인
2. 간단한 채팅 기능
1. Flask 설치
먼저 Flask를 설치해야 합니다. Jupyter Notebook 안에서 설치할 수 있습니다.
!pip install flask
2. Flask 서버 코드
아래 코드를 Jupyter Notebook의 한 셀에 입력하고 실행합니다.
from flask import Flask, render_template_string, request, redirect, url_for
app = Flask(__name__)
# 간단한 데이터 저장 (RAM)
users = {} # {username: password}
messages = [] # [{"user": "username", "message": "text"}]
# 홈 페이지
@app.route("/")
def home():
return render_template_string('''
<h1>소개팅 웹앱</h1>
<p>아래 버튼으로 가입하거나 로그인하세요.</p>
<a href="/signup">가입하기</a> | <a href="/login">로그인</a>
''')
# 가입 페이지
@app.route("/signup", methods=["GET", "POST"])
def signup():
if request.method == "POST":
username = request.form.get("username")
password = request.form.get("password")
if username in users:
return "이미 존재하는 사용자입니다! <a href='/signup'>다시 시도</a>"
users[username] = password
return f"가입 성공! <a href='/login'>로그인</a>"
return render_template_string('''
<h1>가입하기</h1>
<form method="post">
아이디: <input type="text" name="username"><br>
비밀번호: <input type="password" name="password"><br>
<button type="submit">가입</button>
</form>
<a href="/">홈으로</a>
''')
# 로그인 페이지
@app.route("/login", methods=["GET", "POST"])
def login():
if request.method == "POST":
username = request.form.get("username")
password = request.form.get("password")
if users.get(username) == password:
return redirect(url_for("chat", username=username))
return "로그인 실패! <a href='/login'>다시 시도</a>"
return render_template_string('''
<h1>로그인</h1>
<form method="post">
아이디: <input type="text" name="username"><br>
비밀번호: <input type="password" name="password"><br>
<button type="submit">로그인</button>
</form>
<a href="/">홈으로</a>
''')
# 채팅 페이지
@app.route("/chat/<username>", methods=["GET", "POST"])
def chat(username):
if request.method == "POST":
message = request.form.get("message")
messages.append({"user": username, "message": message})
return render_template_string('''
<h1>채팅방</h1>
<div>
{% for msg in messages %}
<p><strong>{{ msg.user }}:</strong> {{ msg.message }}</p>
{% endfor %}
</div>
<form method="post">
<input type="text" name="message" placeholder="메시지를 입력하세요">
<button type="submit">전송</button>
</form>
<a href="/">로그아웃</a>
''', messages=messages)
# 서버 실행
if __name__ == "__main__":
app.run(host="127.0.0.1", port=5000)
3. 실행 방법
1. 위 코드를 Jupyter Notebook에서 실행하면 Flask 서버가 시작됩니다.
2. 출력 창에 나타나는 URL을 클릭합니다. (http://127.0.0.1:5000)
3. 브라우저에서 다음을 테스트합니다:
• 가입: 아이디와 비밀번호를 입력해 가입합니다.
• 로그인: 가입한 계정으로 로그인합니다.
• 채팅: 채팅 메시지를 입력하고 확인합니다.
4. 결과
• 가입한 사용자끼리 같은 채팅방에서 메시지를 주고받을 수 있습니다.
• 모든 데이터는 RAM에 저장되므로, 서버가 종료되면 데이터는 사라집니다.
확장 아이디어
• 데이터베이스 연결: sqlite3를 활용하여 사용자와 메시지 데이터를 저장.
• 실시간 채팅: Flask-SocketIO로 WebSocket 기능 추가.
• UI 개선: Bootstrap을 이용하여 더 나은 디자인 적용.
이 코드로 기본 구조를 확인한 뒤, 점차 발전시킬 수 있습니다!