標籤:http 處理 資料 執行個體 class 目錄 web.py 使用 對象
摘要:
ctx用於存取web請求的環境變數,基於ThreadedDict類進行執行個體化。ThreadedDict類可執行個體化字典類型的對象,該對象某些屬性可用於存取處理線程的id。 這樣字典化執行個體的線程池使得web訪問的並發控制很好地解決,而且線程之間非常獨立。
範例:
1 class example:2 def GET(self):3 referer = web.ctx.env.get(‘HTTP_REFERER‘, ‘http://google.com‘)4 raise web.seeother(referer)
上述代碼使用web.ctx.env來擷取HTTP_REFERER這一環境變數。如果沒有值,則預設會返回‘http://google.com‘,然後重新導向到該網站。
web.ctx可以通過loadhook(掛載)的方式來進行設定。例如,每當service收到一個web請求,Session資料都會存放在web.ctx中。因為web.ctx是安全執行緒的,這時候就可以使用該Session資料(該資料必須是python中可識別的資料類型)。
ctx中包含的資料:
environ 即 env |
一個包含標準WSGI 環境變數格式的字典 |
home |
web應用的根目錄,同時包含任何外部應用引用時的顯示名,例如,http://example.org/admin |
homedomain |
? (顯示為協議+主機) http://example.org |
homepath |
使用者請求的path,即homepath + path = 使用者完整的請求地址,處理時會與urls進行互動 |
host |
主機名稱,包含連接埠(預設8080) |
ip |
發起web請求的使用者ip |
method |
發起的web要求方法 |
path |
使用者請求部分的path,例如,/logon/authenticated,但是對於掛載的子應用,則不會顯示子應用的名稱。例如,主應用myapp.py,子應用subapp.py。子應用中有頁面/read/blogs,則ctx中只會返回example.org/read/blogs而不是example.org/subapp/read/blogs |
protocol |
請求遵循的協議http/https/ftp... |
query |
url中請求的條件 |
fullpath 即 path+query |
完整的請求地址,包含請求的頁面及請求的條件 |
響應狀態:
- status - http狀態代碼,(預設200,ok )異常響應碼:401 未授權
- headers - 包含要求標頭(http header)資訊的兩個元組
- output - 包含響應實體的字串
Web.py 架構學習筆記 - ctx