Flask專案小知識
阿新 • • 發佈:2018-11-17
1.make_response
# 表示返回響應,引數可以是一個物件,比如圖片,一段html語句
make_response(物件)
# 他返回一個response物件,可以設定響應頭資訊
response = make_response(image)
# 設定響應頭資訊
response.headers['Content-Type'] = 'image/jpg'
return response
2.jsonify和dump
jsonify是dump都是將字典轉換成json型別的方法
jsonify是flask內建的,不僅能轉換成json型別,還能將響應型別變為json,dump沒有這功能
所以一般開發flask使用jsonify
3.url地址
不要忘記圖片的url地址也能像a標籤一樣請求後臺介面,但返回型別一定要為圖片物件
4.Redis Setex 和 Set
Setex可以存入redis資料庫鍵值,和過期時間,Set只能存入redis資料庫鍵值
Redis物件.setex(key,time,value)
5.虛擬機器異常退出
在使用虛擬機器時,電腦異常終止導致重啟後虛擬機器提示被使用無法開啟,這時我們可以把我們使用的系統的工作路徑中全部.lck
檔案刪除,以恢復正常
6.通過ajax給後臺傳送請求,後臺資料通過json返回給前端時,我們可以在succeed裡定義函式接受其值
$.ajax({
url:'/',
type:'post',
data:JSON.stringify(params),// 把引數物件轉成json
contentType:'application/json',// 傳送到後端的資料型別
success:function(resp){
# 通過json中的鍵獲取值
resp.key
}
7.藍圖
# 第一個admin為該藍圖名稱,用來做裝飾器路由用
# 第二個admin為‘端點’,用來唯一表示藍圖,也是他的name,url_for(),中引數就為他
# 請求鉤子如果要設計到藍圖問題,也需要加上藍圖的name值在呼叫
admin=Blueprint('admin',__name__)
# 第二個引數為請求字首,訪問路由時需要加上這個字首,這個字首可以不設定
app.register_blueprint(admin,url\_prefix='/admin')
8.日誌
配置日誌不再詳細介紹
使用日誌,可以直接logging也可以通過current_app.logger使用
# 不僅可以通過log輸出也可以向日志中放入資訊
# 這裡只列出了debug和error兩個級別,其他級別也可以使用
logging.debug("This is a debug log.")
current_app.logger.error(e) # 放入資訊
9.redis快取同步
在專案中用redis快取時,為了保證資料與mysql資料庫中資料一致,每次需要用到快取資料時,如果快取中沒有,資料要通過查詢資料庫得到,然後存入redis,在其他地方需要修改內容時,要先將redis中該欄位刪除
10.python中的三元表示式:
# 如果user存在就將user.to_dict()賦值給info,不存在就將none給info
info = user.to_dict() if user else none
11.Session儲存問題
flask想使用session上下文物件實現狀態保持時,我們用flask內建的flask_session進行配置,使其加密儲存在redis中,redis是基於記憶體儲存的,速度相對很快
請求時,一個瀏覽器物件對應一個session,同一瀏覽器視窗內,儲存相同欄位session資訊,後者會覆蓋前者,不同瀏覽器之間是不同session,不會受到影響