WSGI閱讀筆記二

2022-09-22 03:51:10 字數 2579 閱讀 7544

wsgi原始碼中可以看到,第乙個函式是get_current_url,原始碼如下,仔細分析一下這段**的作用:

def get_current_url(environ, root_only=false, strip_querystring=false, host_only=false, trusted_hosts=none):

tmp = [environ['wsgi.url_scheme'], '://', get_host(environ, trusted_hosts)]

if host_only:

return uri_to_iri(''.join(tmp) + '/')

cat(url_quote(wsgi_get_bytes(environ.get('script_name', ''))).rstrip('/'))

cat('/')

if not root_only:

cat(url_quote(wsgi_get_bytes(environ.get('path_info', '')).lstrip(b'/')))

if not strip_querystring:

qs = get_query_string(environ)

if qs:

cat('?' + qs)

return uri_to_iri(''.join(tmp))

get_current_url接受5個引數,其中後四個是預設引數都設定為false或者是none

第一句list中,索引為0的值獲取environ字典中keywsgi.url_scheme的值,scheme有兩種:http或者是https。索引為2的值是乙個位址,其中函式get_hosttrusted_host的作用我們會在下面的原始碼中看到。  

cat(url_quote(wsgi_get_bytes(environ.get('script_name', ''))).rstrip('/'))中首先get環境字典元素中的script_name,接著wsgi_get_bytes方法將編碼方式改成為latin1,在_compat模組中wsgi_get_bytes=operator.methoncaller('encode','latin1')url_quote傳入要轉換的編碼格式的字串和需要轉成的編碼格式,將字串的編碼方式改變成給定的形式,預設引數是utf-8。  

url_quote原始碼中有乙個bytearray方法是乙個內建函式:使用方法

>>>d1 = b"12345"

>>>print(type(d1))

>>>d2 = bytearray(d1)

>>>print(type(d2))

>>>for i in d2:

>>> print d2

由輸出結果可知d2是乙個"bytearry"型別,且d2是乙個可迭代物件。

下乙個條件語句,針對url中pathquerying進行格式化,並將pathquery加到url路徑中。

類似get_query_string函式,在wsgi中有很多,主要得到的是特定的字串,get_query_string的理解如下:

裡面有乙個方法:try_coerce_native其作用是:將字元unicode字元格式轉換成預設的編碼格式。  

函式最後返回乙個經過url_parse處理過的tupleurl_parse返回經過is_test_basedurl或者bytesurl修飾過的字串。而urlbytesurl兩個類從baseurl中繼承。最中還是返回url中各個資訊段組成的tuple

WERKZEUG之WSGI閱讀筆記

pep3333指出,wsgi web server gateway inte ce 是web伺服器和web框架或web應用之間建立的一種簡單通用的介面規範。有了wsgi這份介面規範,在web開發的過程中,能更加自由的選擇伺服器端和框架 在伺服器端和框架的開發過程能夠分離開來,不用過多的考慮雙方具體的...

WSGI 學習筆記

wsgi的全稱是the python web server gateway inte ce,也就是說wsgi是一種閘道器介面,用於在協議之間進行轉換。start response 200 ok content type text html return 這段 是最簡單的wsgi,接受http req...

閱讀筆記二

顧名思義,需求獲取就是進行需求收集的乙個活動,它從人員 資料和環境中得到系統開發所需要的相關資訊。在需求獲取中有很多困難時普遍存在的,了解這些困難度更好地了解需求獲取活動的複雜性有著重要意義。需求獲取中的常見困難 1 使用者和開發人員來自不同的環境,具有不同的背景和立場,有不同的表達方式和詞匯集,因...