카테고리 없음

[Python] Cookie란? flask로 쿠키 연동하기

끄적끄적아무거나 2021. 11. 22. 10:03
반응형

 

목차

     

     

     

    Cookie란?

     

    쿠키란 사용자가 특정 서버에 접속했을 때의 정보를 사용자 본인 컴퓨터에 저장하여 사이트를 이용하는 동안 원할한 사용을 위해 해당 데이터를 불러서 사용합니다. 

     

    Requst 객체는 Cookie 속성을 가지고 있습니다. Dicationary 형태로 저장되고 해당 값은 사용자(Client) 컴퓨터에 저장되는 것입니다. 

     

    예를 들어 사용자가 로그인을 하고 ID 값을 전 페이지에서 이용할 경우 매번 ID 값을 전달하는 것은 비효율 적입니다. 그래서 쿠키에 넣고 필요할 때 마다 불러서 사용할 수 있습니다. 

     

    flask에서 쿠키 값을 사용하려면 아래와 같은 함수들이 필요합니다. 

     

    make_response()
    set_cookie()
    request.cookies.get()

     

    make_response 함수와 연동해서 set_cookie를 사용해서 cookie를 설정 합니다.

     

    request.cookies.get()을 통해서 쿠키값을 불러 옵니다. 

     

     

     

    파이썬 Flask를 사용해서 쿠키 값 저장하고 불러오기 예제

     

    파이선 코드>>

    from flask import Flask, request, render_template, make_response
    
    app = Flask(__name__)
    
    @app.route('/login',methods = ['POST', 'GET'])
    def login():
        if request.method == 'POST':
            info = request.form['id']
            resp = make_response()
            resp.set_cookie('info',info)
            return resp
        else:
            return render_template("login.html")
    
    @app.route('/cookie_data')
    def result(): 
        return request.cookies.get('info')   
        
         
    if __name__ == '__main__':
       app.run(debug = True, port=9999)

     

    8번 라인: form으로 전달 받은 ID 값을 info에 저장합니다.

    9번 라인: 쿠키값 설정을 위해 make_response를 사용합니다. (만일 로그인 완료 후 다른 페이지로 보내고 싶을 경우resp = make_response(render_template("result.html")) 와 같이 사용하면 됩니다.

    10번 라인: info 값을 set_cookie를 통해 쿠키에 저장 합니다. 

    15번 라인: cookie 데이터를 cookies.get을 사용해서 불러 옵니다.

    반응형

     

    HTML 파일>>

    <!DOCTYPE html>
    <html lang="en">
    <head>
      <title>scribblinganything.tistory.com</title>
      <meta charset="utf-8">
      <meta name="viewport" content="width=device-width, initial-scale=1">
      <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.2/dist/css/bootstrap.min.css" rel="stylesheet">
      <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.1.2/dist/js/bootstrap.bundle.min.js"></script>
    </head>
    <body>
    
    <div class="container-sm">
      <form action = "http://localhost:9999/login" method = "post">
            <input type="text" class="form-control " id="id" placeholder="id" name="id">
            <label for="아이디">아이디</label>
            <input type="text" class="form-control" id="pw" placeholder="pw" name="pw">
            <label for="pw">비밀번호</label>
        <button type="submit" class="btn btn-primary" style="float:right;" id="login">로그인</button>
      </form>
    </div>
    </body>
    </html>

     

    결과>>

     

    반응형