【Flask】Session에 대해서
Session 정보
Session은 간단히 말하면 로컬의 간이 데이터베이스다. JavaScript로 말하면 localstorage 같은 것이다. Session을 사용하면 데이터베이스에 데이터를 저장할 필요가 없으며 데이터를 가져올 수 있습니다. 또한 데이터베이스에 여러 번 액세스 할 필요가 없습니다.
계층
이번에는 가상 환경을 사용하고 있기 때문에 가상 환경을 사용하지 않는 경우 venv 파일은 무시해도 좋다.
프로그램 코드
app.pyfrom flask import Flask, redirect, url_for, render_template, request, session #session追加
from datetime import timedelta #時間情報を用いるため
app = Flask(__name__)
app.secret_key = 'user'
app.permanent_session_lifetime = timedelta(minutes=5) # -> 5分 #(days=5) -> 5日保存
@app.route("/")
def home():
return render_template("index.html")
@app.route("/login", methods = ["POST", "GET"])
def login():
#データベースに情報を送るとき
if request.method == "POST":
session.permanent = True # <--- makes the permanent session
user = request.form["nm"] #ユーザー情報を保存する
session["user"] = user #sessionにuser情報を保存
return redirect(url_for("user"))
else: #情報を受け取るとき
if "user" in session: #sessionにユーザー情報があったとき
return redirect(url_for("user")) #userページに遷移
return render_template("login.html") #sessionにユーザー情報がなかったときはloginページに遷移
@app.route("/user")
def user():
if "user" in session:
user = session["user"] #sessionからユーザー情報をとってくる
return f"<h1>{user}</h1>"
else:
return redirect(url_for("login"))
@app.route("/logout") #ログアウトする
def logout():
session.pop("user", None) #削除
return redirect(url_for("login"))
if __name__ == "__main__":
app.run(debug=True)
session은 사전형이며, 이번에는 session에 키를 "user", 값을 입력한 사용자 이름을 설정한다.
쓰기
session["user"] = user
로딩
user = session["user"]
이쪽에서도 가능하다.user = session.get("user")
session.get()이 아니면 None이 반환됩니다.
두 번째 인수에 값을 넣으면 초기 값을 넣을 수 있습니다.session.get('user', '名無し')
app.permanent_session_lifetime = timedelta(minutes=5)
이것은 얼마나 저장할지 설정합니다. 위의 코드에서는 5분간 저장한다는 이미지다. 5일로 하고 싶은 경우는 (days=5)
로 변경하면 된다.
삭제
session.pop('user', None)
영구적으로 저장하고 싶다면
session.permanent = True
라고 선언한다.
주의
포인트는 2개 있어, from flask import Flask, session
로 명시적으로 session을 import 하고 있는 점과, app.secret_key
가 필요한 점. 이것이 없으면
RuntimeError: The session is unavailable because no secret key was set. Set the secret_key on the application to something unique and secret.
그리고 오류가 발생합니다.
참고
Sessions vs Cookies
Flask Tutorial #5 - Sessions
Flask에서 세션 읽기/쓰기
Reference
이 문제에 관하여(【Flask】Session에 대해서), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/eee-lin/items/4e9a2a308ca52b58fd1e
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
이번에는 가상 환경을 사용하고 있기 때문에 가상 환경을 사용하지 않는 경우 venv 파일은 무시해도 좋다.
프로그램 코드
app.pyfrom flask import Flask, redirect, url_for, render_template, request, session #session追加
from datetime import timedelta #時間情報を用いるため
app = Flask(__name__)
app.secret_key = 'user'
app.permanent_session_lifetime = timedelta(minutes=5) # -> 5分 #(days=5) -> 5日保存
@app.route("/")
def home():
return render_template("index.html")
@app.route("/login", methods = ["POST", "GET"])
def login():
#データベースに情報を送るとき
if request.method == "POST":
session.permanent = True # <--- makes the permanent session
user = request.form["nm"] #ユーザー情報を保存する
session["user"] = user #sessionにuser情報を保存
return redirect(url_for("user"))
else: #情報を受け取るとき
if "user" in session: #sessionにユーザー情報があったとき
return redirect(url_for("user")) #userページに遷移
return render_template("login.html") #sessionにユーザー情報がなかったときはloginページに遷移
@app.route("/user")
def user():
if "user" in session:
user = session["user"] #sessionからユーザー情報をとってくる
return f"<h1>{user}</h1>"
else:
return redirect(url_for("login"))
@app.route("/logout") #ログアウトする
def logout():
session.pop("user", None) #削除
return redirect(url_for("login"))
if __name__ == "__main__":
app.run(debug=True)
session은 사전형이며, 이번에는 session에 키를 "user", 값을 입력한 사용자 이름을 설정한다.
쓰기
session["user"] = user
로딩
user = session["user"]
이쪽에서도 가능하다.user = session.get("user")
session.get()이 아니면 None이 반환됩니다.
두 번째 인수에 값을 넣으면 초기 값을 넣을 수 있습니다.session.get('user', '名無し')
app.permanent_session_lifetime = timedelta(minutes=5)
이것은 얼마나 저장할지 설정합니다. 위의 코드에서는 5분간 저장한다는 이미지다. 5일로 하고 싶은 경우는 (days=5)
로 변경하면 된다.
삭제
session.pop('user', None)
영구적으로 저장하고 싶다면
session.permanent = True
라고 선언한다.
주의
포인트는 2개 있어, from flask import Flask, session
로 명시적으로 session을 import 하고 있는 점과, app.secret_key
가 필요한 점. 이것이 없으면
RuntimeError: The session is unavailable because no secret key was set. Set the secret_key on the application to something unique and secret.
그리고 오류가 발생합니다.
참고
Sessions vs Cookies
Flask Tutorial #5 - Sessions
Flask에서 세션 읽기/쓰기
Reference
이 문제에 관하여(【Flask】Session에 대해서), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/eee-lin/items/4e9a2a308ca52b58fd1e
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
from flask import Flask, redirect, url_for, render_template, request, session #session追加
from datetime import timedelta #時間情報を用いるため
app = Flask(__name__)
app.secret_key = 'user'
app.permanent_session_lifetime = timedelta(minutes=5) # -> 5分 #(days=5) -> 5日保存
@app.route("/")
def home():
return render_template("index.html")
@app.route("/login", methods = ["POST", "GET"])
def login():
#データベースに情報を送るとき
if request.method == "POST":
session.permanent = True # <--- makes the permanent session
user = request.form["nm"] #ユーザー情報を保存する
session["user"] = user #sessionにuser情報を保存
return redirect(url_for("user"))
else: #情報を受け取るとき
if "user" in session: #sessionにユーザー情報があったとき
return redirect(url_for("user")) #userページに遷移
return render_template("login.html") #sessionにユーザー情報がなかったときはloginページに遷移
@app.route("/user")
def user():
if "user" in session:
user = session["user"] #sessionからユーザー情報をとってくる
return f"<h1>{user}</h1>"
else:
return redirect(url_for("login"))
@app.route("/logout") #ログアウトする
def logout():
session.pop("user", None) #削除
return redirect(url_for("login"))
if __name__ == "__main__":
app.run(debug=True)
session["user"] = user
로딩
user = session["user"]
이쪽에서도 가능하다.user = session.get("user")
session.get()이 아니면 None이 반환됩니다.
두 번째 인수에 값을 넣으면 초기 값을 넣을 수 있습니다.session.get('user', '名無し')
app.permanent_session_lifetime = timedelta(minutes=5)
이것은 얼마나 저장할지 설정합니다. 위의 코드에서는 5분간 저장한다는 이미지다. 5일로 하고 싶은 경우는 (days=5)
로 변경하면 된다.
삭제
session.pop('user', None)
영구적으로 저장하고 싶다면
session.permanent = True
라고 선언한다.
주의
포인트는 2개 있어, from flask import Flask, session
로 명시적으로 session을 import 하고 있는 점과, app.secret_key
가 필요한 점. 이것이 없으면
RuntimeError: The session is unavailable because no secret key was set. Set the secret_key on the application to something unique and secret.
그리고 오류가 발생합니다.
참고
Sessions vs Cookies
Flask Tutorial #5 - Sessions
Flask에서 세션 읽기/쓰기
Reference
이 문제에 관하여(【Flask】Session에 대해서), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/eee-lin/items/4e9a2a308ca52b58fd1e
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
session.pop('user', None)
영구적으로 저장하고 싶다면
session.permanent = True
라고 선언한다.
주의
포인트는 2개 있어, from flask import Flask, session
로 명시적으로 session을 import 하고 있는 점과, app.secret_key
가 필요한 점. 이것이 없으면
RuntimeError: The session is unavailable because no secret key was set. Set the secret_key on the application to something unique and secret.
그리고 오류가 발생합니다.
참고
Sessions vs Cookies
Flask Tutorial #5 - Sessions
Flask에서 세션 읽기/쓰기
Reference
이 문제에 관하여(【Flask】Session에 대해서), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/eee-lin/items/4e9a2a308ca52b58fd1e
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
포인트는 2개 있어,
from flask import Flask, session
로 명시적으로 session을 import 하고 있는 점과, app.secret_key
가 필요한 점. 이것이 없으면RuntimeError: The session is unavailable because no secret key was set. Set the secret_key on the application to something unique and secret.
그리고 오류가 발생합니다.
참고
Sessions vs Cookies
Flask Tutorial #5 - Sessions
Flask에서 세션 읽기/쓰기
Reference
이 문제에 관하여(【Flask】Session에 대해서), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/eee-lin/items/4e9a2a308ca52b58fd1e
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(【Flask】Session에 대해서), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/eee-lin/items/4e9a2a308ca52b58fd1e텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)