python類庫26 web2py的URL對映

2022-02-18 11:03:15 字數 1728 閱讀 7805

web2py的url對映 

1) 的對映

預設地,任何新的request將建立新的session,然後session cookie將session的資訊返回使用者的瀏覽器。

web2py自動地透明地用session和cookie來記錄訪問者。對每個新的訪問者,它建立乙個session然後賦予乙個唯一的session_id。session是變數的容器儲存在server端。session的id將通過cookie回傳給訪問者的瀏覽器。當訪問者在同乙個應用中請求另乙個頁面時,瀏覽器將cookie返回,在server端web2py將檢查cookie然後相應的session將被儲存。

.html擴充套件是預設的頁面擴充套件,頁面的擴充套件決定了使用何種view來渲染controller的function。此方法允許頁面被渲染為多種格式(html,xml,json,rss,etc)。

2)的對映

web2py也支援if_modified_since協議,如果檔案已經儲存在瀏覽器的緩衝且從上個版本後沒有改動,檔案將不被返回。

在以上的例子中,request.args[i] 和 request.args(i)用來獲得request.args的第i個元素。

request.url 儲存了當前request的full url(不包含get變數)。

如果http request是get,則request.env.request_method設定為get,如果為post,則request.env.request_method設定為post。

url查詢變數被儲存在request.vars儲存字典中; 如果是get request,則變數同時被儲存在request.get_vars,如果是post,則儲存在 request.post_vars 。

web2py儲存wsgi和web2py環境變數在request.env中,例如request.env.path_info = 'a/c/f',儲存http 頭在環境變數中,例如request.env.http_host = '127.0.0.1:8000' 。

4) 總結

web2py對靜態檔案的請求,只是簡單地讀取和返回請求的檔案的流。

對於非靜態檔案,過程如下:

1))解析cookies;

2))建立環境來執行函式;

3))初始化request,response,cache;

4))開啟存在的session或者新建立session;

5))執行屬於請求應用的models;

6))執行請求控制器的action函式;

7))如果函式返回dictionary,則執行對應的view;

8))如果成功,提交所有開啟的事務;

9))保持session;

10))返回乙個http response;

注意:controller和view在相同環境的不同的copy下執行,controller對view不可見,但是view可以訪問models,可以訪問controller action函式返回的變數。

如果乙個異常(不是http異常)發生,web2py做以下動作:

1))儲存錯誤檔案的traceback且分配乙個ticket number;

2))roll back所有開啟的事務;

3))返回乙個錯誤頁面包含了ticket number;

如果是http異常,則被認為是內部的行為,所有開啟的資料庫事務被commit。

完!

Py 與C類不同的語法2

1.if語句 python中if語句的一般形式如下所示 if condition 1 block 1 elif condition 2 block 2 else block 32.while迴圈 while 判斷條件 block注意 1 需要注意冒號和縮排 2 沒有do.while迴圈。3.for迴...

web2py 的自定義URL跳轉

web2py不同於django和web.py的乙個特色,它自然的就是restful的形式。當然這也造成了一定的限制,就是我們有時候不能方便的自定義請求的路徑。其實web2py一樣可以自定義請求路徑。只是它預設情況下沒有給出這個配置。簡而言之,在web2py的根目錄下有乙個 routers.examp...

python類的學習 2 類的成員

class test def setvalue self,value self.value value 在類的內部可以直接訪問私有成員 defshow self print self.value t test 0 t.show 0在python中,以下劃線開頭或結束的成員名有特殊的含義 1 以乙個下...