Flask 를 이용하여 MySQL 데이터베이스에 로그인하고 로그아웃하는 기본적인 Flask 예제입니다.
이 예제는 매우 단순한 형태이므로 실제 웹 애플리케이션에서는 보안, 에러 처리 등을 고려해야 합니다.
Flask 와 MySQL 로그인/로그아웃 예제
라이브러리 설치
$ pip install flask flask-mysqldb
디렉토리 구조
/flaskapp
/templates
home.html
login.html
app.py
app.py
from flask import Flask, render_template, request, redirect, url_for, session
from flask_mysqldb import MySQL
import MySQLdb.cursors
import re
app = Flask(__name__)
# MySQL 데이터베이스를 Flask에 연결
app.config['MYSQL_HOST'] = 'localhost'
app.config['MYSQL_USER'] = 'root'
app.config['MYSQL_PASSWORD'] = 'root'
app.config['MYSQL_DB'] = 'myflaskapp'
mysql = MySQL(app)
# Secret key 설정
app.secret_key = 'your-secret-key'
@app.route('/')
def home():
# 사용자가 로그인한 경우 home.html을 반환, 아니면 로그인 페이지로 리다이렉트
if 'loggedin' in session:
return render_template('home.html', username=session['username'])
return redirect(url_for('login'))
@app.route('/login', methods=['GET', 'POST'])
def login():
# 출력 메시지를 사용자에게 보여주기 위한 변수
msg = ''
# 요청 메서드가 POST인 경우
if request.method == 'POST':
username = request.form['username']
password = request.form['password']
# MySQL을 사용하여 사용자 이름 및 암호 확인
cursor = mysql.connection.cursor(MySQLdb.cursors.DictCursor)
cursor.execute('SELECT * FROM accounts WHERE username = %s AND password = %s', (username, password,))
account = cursor.fetchone()
# 계정이 존재하는 경우
if account:
session['loggedin'] = True
session['id'] = account['id']
session['username'] = account['username']
# 로그인 성공적으로 되었을 경우 홈 페이지로 이동
return redirect(url_for('home'))
else:
# 로그인 실패 시 메시지
msg = 'Incorrect username or password!'
# 로그인 페이지를 보여주기 위한 메시지를 전달
return render_template('login.html', msg=msg)
@app.route('/logout')
def logout():
# 로그아웃하면 세션 데이터를 지움
session.pop('loggedin', None)
session.pop('id', None)
session.pop('username', None)
# 로그인 페이지로 리다이렉트
return redirect(url_for('login'))
if __name__ == '__main__':
app.run(debug=True)
templates/home.html
<!DOCTYPE html>
<html>
<body>
<h1>Welcome, {{ username }}!</h1>
<a href="/logout">Log Out</a>
</body>
</html>
templates/login.html
<!DOCTYPE html>
<html>
<body>
<form method="POST">
<input type="text" name="username" placeholder="Username" required>
<input type="password" name="password" placeholder="Password" required>
<input type="submit" value="Login">
</form>
<p>{{ msg }}</p>
</body>
</html>
SQL
# Table 생성
CREATE TABLE accounts (
id INT PRIMARY KEY AUTO_INCREMENT,
username VARCHAR(50) NOT NULL,
password VARCHAR(255) NOT NULL
);
# Test 계정
INSERT INTO accounts (username, password) VALUES ('testuser', 'testpass');'Programming > Python' 카테고리의 다른 글
| Python, Flask, ChatGPT API (OpenAI) 사용 예제 (0) | 2023.06.22 |
|---|---|
| CCTV 라이브 이미지 다운로드 (0) | 2023.06.19 |
| Python, Docker, Compose, Nginx, Flask, Gunicorn 연동하기 (0) | 2023.06.15 |
| 이미지에서 특정 색상 범위 비율 검출 (1) | 2023.06.12 |