1. 程式人生 > >Flask專案小知識

Flask專案小知識

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,不會受到影響