用flask開發個人部落格(7)—— flask中設定和獲取cookie
一 什麼是cookie
什麼是cookie?如果單單從資料結構的角度來說,它可以被理解成用來儲存資料的一個dictionary,由一組組鍵值對組成.如果從作用上來說,我們知道Http協議是一種無狀態的協議.什麼叫無狀態呢,就是本次的客戶端請求不會保留上一次客戶端請求的狀態,簡單點說就是這樣會要求我們每次在瀏覽器中點開一個網站的連結都會輸一次賬戶和密碼.cookie就是用來解決這個問題的.
為了解決上述問題,我們第一次登入web伺服器,服務端就會在它的響應中的Set-Cookie欄位中傳送一些鍵值對,這就包括一個Session ID以及其他一些資訊(也包括我們自定義的cookie中的鍵值對),並告訴客戶端在本地快取這個cookie.然後客戶端以後進行連結時每次都會傳送這個Session ID,伺服器一看是哪個Session ID就知道是哪個客戶端發起的連結了,就不會要求我們再次輸賬戶和密碼驗證了.
我們在flask中自定義cookie,實際上就是在響應Response的Set-Cookie欄位中增加我們自定義的鍵值對.而獲取cookie,就是通過請求Request中通過鍵獲取其對應的值.
二 設定cookie
通過響應物件的set_cookie方法我們可以設定自定義cookie:
@app.route('/set_cookie')
def set_cookie():
response=make_response('Hello World');
response.set_cookie('Name','Hyman')
return response
我們還可以指定cookie的有效時長,下面的程式碼把有效時長設定成了30天.通常情況下,我們還可以在瀏覽器上設定cookie的有效時長,而且瀏覽器上配置的有效時長優先順序要高於我們在程式碼中設定的.
outdate=datetime.datetime.today() + datetime.timedelta(days=30)
response.set_cookie('Name','Hyman',expires=outdate)
三 獲取cookie
我們可以使用Request物件cookies欄位的get方法來獲取我們所需要的cookie,下面的程式碼我們直接獲取cookie並返回給檢視函式:
@app.route('/get_cookie')
def get_cookie():
name=request.cookies.get('Name')
return name
我們還可以在模板中獲取cookie,然後渲染模板.
test.html:
<h1>My name is {{request.cookies.get('Name')}}</h1>
渲染模板:
@app.route('/get_template')
def get_template():
return render_template('test.html')
四 刪除cookie
共有三種方法可以刪除一個cookie:
(1) 可以通過在瀏覽器中設定來清除cookie.
(2) 使用Response的set_cookie進行清除
@app.route('/del_cookie')
def del_cookie():
response=make_response('delete cookie')
response.set_cookie('Name','',expires=0)
return response
(3)使用Response的 delete_cookie方法.
@app.route('/del_cookie2')
def del_cookie2():
response=make_response('delete cookie2')
response.delete_cookie('Name')
return response
Github位置:
https://github.com/HymanLiuTS/flaskTs
git clone git@github.com:HymanLiuTS/flaskTs.git
獲取本文原始碼:
git checkout FL07
相關文章
- Python Flask,cookie,設定、獲取、刪除cookiePythonFlaskCookie
- python flask 設定cookiePythonFlaskCookie
- flask框架中的cookie和sessionFlask框架CookieSession
- [python][flask] Flask 入門(以一個部落格後臺為例)PythonFlask
- cookie的設定、獲取和刪除Cookie
- Flask - Cookie的使用FlaskCookie
- Flask(11)- 操作 CookieFlaskCookie
- 【flask框架】——flask-restful風格Flask框架REST
- [譯] 用 Flask 和 Vue.js 開發一個單頁面應用FlaskVue.js
- [應用案例]onethink開發個人技術部落格
- 使用Flask-Avatars在Flask專案裡設定頭像Flask
- flask部落格專案之tinymce圖片上傳Flask
- day93:flask:Cookie&Session&請求鉤子&捕獲錯誤&上下文&Flask-ScriptFlaskCookieSession
- onethink開發個人技術部落格
- Haytham個人部落格開發日誌 -- Flask+Vue基於token的登入狀態與路由管理FlaskVue路由
- flask中flask-restful是什麼?FlaskREST
- 關於 Flask Web 開發的個人小結FlaskWeb
- [雪峰磁針石部落格]web開發工具flask中文英文書籍下載-持續更新WebFlask
- Flask01 第一個flask專案Flask
- python flask 定時器PythonFlask定時器
- 部落格設定
- 【python Flask】用uwsgi 啟動flask 服務方式PythonFlask
- Centos 7下Nginx+uWsgi部署Flask應用CentOSNginxFlask
- flask 專案開發實戰Flask
- 使用Flask開發簡單介面Flask
- Flask啟用httpsFlaskHTTP
- 用uWSGI和Nginx部署Flask專案NginxFlask
- 如何在Flask中整合Dash應用Flask
- 個人部落格如何搭建 用什麼系統好?學網站建設從開發一個部落格開始網站
- 基於SpringBoot從零構建部落格網站 - 開發設定主頁標識和修改個人資訊功能Spring Boot網站
- Flask搭建個人部落格網站(1)—專案規劃--李渣渣(lizaza.cn)Flask網站
- flask筆記:部署flaskFlask筆記
- python 中的 flaskPythonFlask
- 部落格初始設定
- 關於 flask_session 在登入時設定後,再其他介面獲取時為None的問題FlaskSessionNone
- 快速用flask框架開發後端( 僅限於玩 )Flask框架後端
- 13-flask部落格專案之restful api詳解2-使用FlaskRESTAPI
- 《Flask Web 開發指南 pt.2》FlaskWeb
- React個人部落格開發React