Flask - Cookies

Cookie được lưu trữ trên máy tính của khách hàng dưới dạng tệp văn bản. Mục đích của nó là ghi nhớ và theo dõi dữ liệu liên quan đến việc sử dụng của khách hàng để có trải nghiệm khách truy cập và thống kê trang web tốt hơn.

A Request objectchứa thuộc tính của cookie. Nó là một đối tượng từ điển của tất cả các biến cookie và các giá trị tương ứng của chúng, một ứng dụng khách đã truyền đi. Ngoài ra, cookie cũng lưu trữ thời gian hết hạn, đường dẫn và tên miền của trang web.

Trong Flask, cookie được đặt trên đối tượng phản hồi. Sử dụngmake_response()hàm để nhận đối tượng phản hồi từ giá trị trả về của một hàm xem. Sau đó, sử dụngset_cookie() chức năng của đối tượng phản hồi để lưu trữ một cookie.

Đọc lại một cookie thật dễ dàng. Cácget() phương pháp của request.cookies thuộc tính được sử dụng để đọc một cookie.

Trong ứng dụng Flask sau, một biểu mẫu đơn giản sẽ mở ra khi bạn truy cập ‘/’ URL.

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

Trang HTML này chứa một đầu vào văn bản.

<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>

Biểu mẫu được đăng lên ‘/setcookie’URL. Chức năng xem được liên kết đặt tên CookieuserID và hiển thị một trang khác.

@app.route('/setcookie', methods = ['POST', 'GET'])
def setcookie():
   if request.method == 'POST':
   user = request.form['nm']
   
   resp = make_response(render_template('readcookie.html'))
   resp.set_cookie('userID', user)
   
   return resp

‘readcookie.html’ chứa một siêu liên kết đến một chức năng xem khác getcookie(), đọc lại và hiển thị giá trị cookie trong trình duyệt.

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

Chạy ứng dụng và truy cập http://localhost:5000/

Kết quả của việc đặt cookie được hiển thị như thế này -

Đầu ra của cookie đọc lại được hiển thị bên dưới.