티스토리 뷰

IT/Flask

[Flask] 쿠키 (Cookies)

Dragonz 2020. 8. 12. 21:36
반응형

 

 

쿠키는 텍스트 파일 형태로 클라이언트 PC 에 저장된다. 더 나은 방문자 경험과 사이트 통계를 위해 클라이언트 사용과 관련된 데이터를 저장하는 것이다.

 

파일명 : 9_cookies.py

from flask import Flask, render_template, request, make_response
app = Flask(__name__)

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

@app.route('/setcookie', methods = ['POST', 'GET'])
def setcookie():
    if request.method == 'POST':
        user = request.form['nm']

    resp = make_response(render_template('9_readcookie.html'))
    resp.set_cookie('userID', user)
    return resp

@app.route('/getcookie')
def getcookie():
    name = request.cookies.get('userID')
    return '<h1>welcome '+name+'</h1>'

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

request 객체는 쿠키의 속성이 포함되어 있다. Flask 에서 쿠키는 request 객체에 설정된다. make_response() 함수를 사용하여 뷰 함수의 반환 값에서 응답 객체를 가져온 후 set_cookie() 함수를 사용하여 쿠키를 저장한다.

 

파일명 : 9_index.html

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

ROOT URL 로 접근하면 9_index.html 의 내용이 브라우저에 보여지는데 사용자로부터 문자열을 입력받는다.

submit 버튼을 누르면 setcookie() 함수가 호출되고, 9_readcookie.html 의 내용을 브라우저에 보여준다.

 

파일명 : 9_readcookie.html

<html>
    <body>
        <p><h3>Cookie userID is set</h3></p>
        <p><a href='/getcookie'>Click here to read cookie</a></p>
    </body>
</html>

9_readcookie.html 은 userID 가 설정되었다는 메세지와 함께 getcookie() 함수를 호출하는 하이퍼링크를 가지고 있다. 링크를 선택하면 getcookie() 함수가 호출되면서 저장된 cookie 값을 가져와 화면에 보여준다.

 

userID 를 입력하고 submit 버튼을 클릭한다.

 

9_readcookie.html 는 readcookie() 함수를 호출하기 위한 하이퍼링크를 가지고 있다.

 

readcookie() 함수는 쿠키정보를 읽어 화면에 보여준다. (사용자가 입력한 userID)

 

 

반응형
댓글
공지사항