您好,登錄后才能下訂單哦!
本文小編為大家詳細介紹“flask設置cookie的方法是什么”,內容詳細,步驟清晰,細節處理妥當,希望這篇“flask設置cookie的方法是什么”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學習新知識吧。
解釋: 用來保持服務器和瀏覽器交互的狀態的, 由服務器設置,存儲在瀏覽器
作用: 用來做廣告推送
cookie的設置和獲取
max_age: 表示cookie在瀏覽器的存儲時間,單位是秒
設置cookie: response.set_cookie(key,value,max_age)
獲取cookie: request.cookies.get(“key”)
解釋: 服務器和用戶來做狀態保持的,里面存儲的是敏感信息(比如身份證,登陸信息),由服務器設置,并存儲在服務器
作用: 用來做用戶的登陸狀態保持
session的設置和獲取
設置session: sessioin[key] = value
獲取session: value = session.get(key)
注意點:
1.session的存儲依賴于cookie
2.存儲在cookie中的sessionID需要加密,需要秘鑰(SECRET_KEY)
解釋: 就是一個容器
請求上下文
request: 封裝的是請求相關的數據
session: 封裝的是和用戶相關的敏感信息
應用上下文(在項目中具體應用)
current_app: 是app的一個代理對象,可以通過他獲取app身上設置的各種屬性,主要用在模塊化開發中
g: 一個局部的全局變量,主要用在裝飾器中
解釋: 屬于flaks的擴展
作用: 用來動態運行程序,配合flask_migrate做數據庫遷移
使用格式:
啟動命令: python xxx.py runserver -h(host是IP地址) -p(端口號) -d(調試模式)
pip install flask_script
1.安裝
2.導入Manager類
3.創建對象manager,管理app
4.使用manager啟動程序
解釋: 屬于jinja2的模板函數
好處:
1.以后的視圖函數,只負責業務邏輯的處理,比如: 數據庫的增刪改查
2.以后數據的展示,全部都有jinja2的模板負責
使用格式:
response = render_template(‘模板文件’)
解釋: 在模板中獲取視圖函數的變量
格式:
{{ 變量 }}
模板語法的種類
分支格式:
{% if 條件 %} 語句1 {% else%} 語句2 {% endif %}
循環語句格式:
{% for 變量 in 容器 %} {% endfor %}
注釋:
{# 這里是注釋的內容 #}
解釋: 過濾器,用來過濾想要的數據
格式: {{ 字符串 | 字符串過濾器 }}
常見的字符串過濾器有:
title: 將每個單詞的首字母都大寫
lower: 將每個單詞都小寫
upper: 將每個單詞都大寫
reverse: 反轉
…
解釋: 過濾器,用來過濾想要的數據
格式: {{ 列表 | 列表過濾器 }}
常見的列表過濾器有:
first: 獲取列表第一個元素
last: 最后一個元素
sum: 列表和
length: 列表長度
…
解釋: 當系統提供的過濾器滿足不了需求的時候,需要自定義
自定義過濾器有兩種格式:
def 函數名: pass
app.add_template_filter(函數名,‘過濾器名字’)
1.先定義好函數,再將函數添加到系統默認的過濾器列表中
2.定義函數的時候,直接使用系統過濾器進行裝飾
@app.template_filter('過濾器名字') def 函數名(): pass
案例:
1.獲取列表偶數和
2.反轉列表
解釋: 相當于python中的函數,定義好一段功能,在需要的時候進行調用即可
定義格式:
{% macro 宏名(參數) %} {% endmacro %}
使用格式:
// 使用當前文件定義好的宏 {{ 宏名(參數) }} //使用其他文件定義好的宏 {% import '文件' as 別名%} {{ 別名.宏名(參數) }}
解釋: 一個子模板繼承自父模板
作用: 共性抽取,代碼復用
父模板
1.所有子類都具有的相同的內容的, 在父模板中直接寫死
2.每個子類的模板中不一樣的內容,使用block模板定義好
子模板
1.根據子類自己的需求,去重寫父類中的block對應的內容
2.如果重寫之后,還想保留父類的內容,那么使用{{super()}}
3.繼承格式: {% extends ‘父文件名’%}, 寫在頁面的頂部
注意點:
定義block的格式
{% block 名稱 %} {% endblock %}
解釋: 在一個文件中完全擁有另外一個文件,不夠靈活,沒法擴展
格式:
方式一: {% include '文件' %} 方式二: {% include '文件' ignore missing %}
注意點: ignore missing 如果包含的文件不存在,也不會報錯
解釋: 不需要通過python程序傳遞就可以直接使用的變量
常見的特有變量如下:
場景: 登陸出錯,可以顯示
注意點:
1.使用flash存儲消息的時候需要設置SECRET_KEY
2.因為flash內部的消息存儲,依賴于了session
config: 就是flask中的app.config, 表示應用程序中的所有配置信息
request: 表示請求上下文對象,封裝的是請求相關的數據
g: 局部的全局變量(了解)
url_for(): 反解析,通過函數的名字,解析到視圖函數的路徑
get_flashed_messsages(): 用來消耗flash方法中存儲的消息.
解釋: 跨站點請求偽造
掌握: 需要理解講義中的攻擊流程圖
代碼演示: webA, webB
在cookie增加一個csrf_token
在表單中增加一個csrf_token
校驗: 取出cookie和表單中的csrf_token比較如果二者一致那么是正常請求
具體過程,看keynote圖解
使用流程:
from flask_wtf.csrf import CSRFProtect
pip install flask-wtf
1.安裝擴展包
2.導入包
3.創建CSRFProtect對象,保護app對象
4.設置SECRET_KEY,便于csrf_token加密
5.需要在表單中設置csrf_token隱藏字段即可
例子: 注冊案例
注意點:
1.CSRFProtect一旦保護了app之后, 會對’POST’, ‘PUT’, ‘PATCH’, 'DELETE’做校驗.
讀到這里,這篇“flask設置cookie的方法是什么”文章已經介紹完畢,想要掌握這篇文章的知識點還需要大家自己動手實踐使用過才能領會,如果想了解更多相關內容的文章,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。