Flask小知識集合

2022-10-02 09:12:10 字數 2565 閱讀 5155

flask在上下文中提供了四種變數,分別是:

變數名上下文

說明應用上下文

當前啟用程式的程式例項

g應用上下文

處理請求時用作臨時儲存的物件。每次請求都會重設這個變數

request

請求上下文

請求物件,封裝了客戶端發出的http請求中的內容

session

請求上下文

使用者會話,用於儲存請求之間需要「記住」的字典

其中g就是在一次請求中當做全域性變數來使用的。g:global,給g賦值,就可以在當前這次請求中全域性使用。

傳參

import time

from flask import flask

# 向flask例項新增乙個路由

def hello_world():

print(double(10))

return 'hello world!'

def double(x):

return 2 * x

全域性變數

import time

from flask import flask,g

# 向flask例項新增乙個路由

def hello_world():

g.x = 20

print(double())

return 'hello world!'

def double():

return 2 * g.x

g物件在整個request請求處理期間生效,這表明,g物件是與request是一一對應的。一次request請求,就有乙個g物件,在這次請求之前,之後,以及同時間的請求裡,他們互不干擾。

flask提供了乙個專門用來處理應用錯誤的裝飾器errorhandler, 利用這個裝飾器,你可以非常輕鬆的實現對系統錯誤異常的捕捉和處理。

errorhandler可以傳入http code,例如404,500。這是比較常見的請求錯誤,如果能夠為這種錯誤提供專門的頁面,無疑會提高使用者的體驗。除了http code, 還可以傳入異常類,捕捉特定的異常。

import time

from flask import flask,g

def error(e):

print('捕捉到404,找不到路由')

return '捕捉到404,找不到路由', 404

def catch_except(e):

return '捕捉到異常 '+ str(e), 500

def hello_world():

a = 0/0

return 'hello world!'

正常請求,除0報錯

請求不存在路由

coverage.py是乙個使用python編寫的檢查**覆蓋率的工具,我們可以使用它來檢查測試覆蓋率。

安裝

pip install coverage
簡單使用

def add(x, y):

return x + y

def subtract(x, y):

return x - y

def multiply(x, y):

return x * y

add(2,3)

使用如下命令獲取測試結果

coverage run cover_test.py

coverage report

(work) ➜  desktop coverage report           

name stmts miss cover

-----------------------------------

cover_test.py 7 2 71%

-----------------------------------

total 7 2 71%

在flask中,可以執行測試命令同時開啟覆蓋率檢查。

coverage run --source=sayhello  -m unittest discover
--source:指定要檢查的包或模組為sayhello

-m 指定自動測試的命令。如果使用pytest則為 -m pytest 使用unittest則為 -m unittest

Android 小知識集合

顯示網頁 1.uri uri uri.parse 2.intent it new intent intent.action viewuri 3.startactivity it 顯示地圖 1.uri uri uri.parse geo 38.77.2.intent it new intent int...

字典集合小知識

1,首先來講乙個行列轉置的問題,有乙個磁條,我們往裡存資料,int佔4個位元組,char佔1個等,若當中的乙個被刪掉,則此位置內容為零,而這塊的記憶體卻不能被重複利用,就會造成浪費,為了把空間重新利用起來就用到了鍊錶指標,相當於乙個結構體,包括兩個部分,分別是內容和下乙個指標,第乙個是頭指標和空位1...

flask小知識點總結

request.form用來接受post請求引數,request.args接受get請求引數。以requests.form key 若值不存在,丟擲keyerror,會直接返回400錯誤,可以手動捕獲。如下 def login try username request.args name passw...