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 以乙個下...