728x90

Python에서 Flask로 앞에서 session를 이용해서 로그인을 만들었는데

 Html이 Python에 있으니 코드가 지저분해보인다.

그래서, render_template를 사용해서 HTML를 login.html, index.html

불려와서 보여주자.

 

※ HTML 파일 경로

templates\

 

※ 소스

1. login.py

from flask import Flask, session, render_template, request, redirect, url_for

app = Flask(__name__)

# Set the secret key to some random bytes. Keep this really secret!
#app.secret_key = b'_5#y2L"F4Q8z\n\xec]/'
app.secret_key = b'test'

@app.route('/')
def index():
    if 'username' in session:
        return render_template('index.html')
    return redirect(url_for('login'))

@app.route('/login', methods=['GET', 'POST'])
def login():
    if request.method == 'POST':
        session['username'] = request.form['username']
        return redirect(url_for('index'))
    return render_template('login.html')

@app.route('/logout')
def logout():
    # remove the username from the session if it's there
    session.pop('username', None)
    return redirect(url_for('index'))

if __name__ == '__main__':
    app.run(debug=True)  

 

2. \templates\index.html

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Flask Index</title>
</head>
<body>
  Logged in as {{session["username"]}}<br>
  <a href="logout">logout</a>
</body>
</html>

 

3. \templates\login.html

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Flask Login</title>
</head>
<body>
  <form method="post">
    <p><input type=text name=username>
    <p><input type=submit value=Login>
  </form>
</body>
</html>

 

※ 실행

py login.py

728x90
반응형

'Software > Python' 카테고리의 다른 글

Python시작하기 - QRcode  (0) 2024.07.30
파이선 소개(chatGPT작성)  (1) 2024.07.23
Flask 시작하기 - session 사용  (0) 2024.07.16
Python 시작하기 - Flask 소개  (0) 2024.07.16
Python 시작하기 - Mysql 활용  (0) 2024.07.07

+ Recent posts