Python Flask - Cookie

Flask에서 set_cookie로 쿠키를 생성하고, request.cookies.get() 를 통해 쿠키를 불러 올 수 있습니다.

set_cookie(key, value='', max_age=None, expires=None, path='/', domain=None, secure=None, httponly=False)

* Key = 설정되는 쿠키의 키 (이름)

* Value = 쿠키의 값

* Max_age = 초 단위, 쿠키가 클라이언트의 브라우저 세션만큼 지속되는 값

* expires = datetime 객체 / UNIX Timestamp

* domain = 도메인간 쿠키 설정시

* path = 쿠키를 지정된 경로로 제한


아래 예시는 index.html에서 사용자에게 문자열을 입력 받아 "/setcookie" 에서 쿠키를 생성하고, "/getcookie"에서 쿠키를 불러와 출력하도록 구현해보겠습니다.




<html>
   <body>
      <form action = "/setcookie" method = "POST">
         <p><h3>Enter userID</h3></p>
         <p><input type = 'text' name = 'name'/></p>
         <p><input type = 'submit' value = 'Login'/></p>
      </form>
   </body>
</html>

/templates/index.html

index.html 에서는 사용자에게 name를 입력받아 "/setcookie"로 전달합니다.




from flask import Flask, make_response, request, render_template

@app.route('/')
def index():
    return render_template("index.html")


@app.route("/setcookie", methods=["GET", "POST"])
def setcookie():
    if request.method == "POST":
        user = request.form["name"]
        res = make_response("Create Cookie!!")
        res.set_cookie("userID", user)
        return res


@app.route("/getcookie")
def getcookie():
    name = request.cookies.get("userID")
    return name

/app.py




[index.html]

"/"로 접근시 /templates에 존재하는 "index.html"를 불러온 뒤. 사용자에게 이름을 입력 받습니다.




[Create Cookie]

"/setcookie"로 접근시 Method가 POST일 경우에만 함수가 실행이 되어, 사용자에게 전달받은 이름을 가지고 쿠키를 생성합니다.




[Get Cookie]

"/getcookie"를 통해 쿠키를 출력합니다.