초간단 파이썬 채팅어플

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을 이용하여 더 나은 디자인 적용.

이 코드로 기본 구조를 확인한 뒤, 점차 발전시킬 수 있습니다!

반응형