freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

mod_python_328中文手冊(cè)(nxpowerlite-文庫(kù)吧

2025-10-02 21:06 本頁(yè)面


【正文】 Dear %s,br Thank you for your kind ments, we will get back to you shortly. /html % name return name 當(dāng)用戶點(diǎn)擊提交按鈕時(shí),發(fā)布器將會(huì)裝入 函數(shù)到 form模塊,傳遞表單字段作為關(guān)鍵字參數(shù)。也會(huì)傳遞請(qǐng)求對(duì)象到 req。 注意逆必須要有 req參數(shù)。發(fā)布器已經(jīng)可以很聰明的傳遞必要的參數(shù)。函數(shù)的返回值將被發(fā)送到客戶端瀏覽器。 即使使用發(fā)布器可以非常簡(jiǎn)單的處理,但是程序仍然可以利用mod_python的強(qiáng)大功能,比如調(diào)用請(qǐng)求對(duì)象。當(dāng)然也可以調(diào)用本地的mod_python處理器來(lái)完成大量的工作。比如設(shè)置 HTML頭路由;返回錯(cuò)誤拋出 ;從客戶端的重定向讀寫文件 ()和 (),等等。 閱讀 。 節(jié)標(biāo)題翻譯有誤,應(yīng)為 快速學(xué)習(xí) apache如何處理請(qǐng)求 。 如果你想要深入鉆研 mod_python的功能,需要理解什么是處理器。 apache分階段 (phase)處理請(qǐng)求。比如第一個(gè)階段是用戶認(rèn)證,之后是檢驗(yàn)用戶是否有權(quán)訪問(wèn)特定的文件,然后是讀取文件并發(fā)送到客戶端。一個(gè)典型的靜態(tài)文件請(qǐng)求包含三個(gè)階 段: URI到文件位置 戶端 。更復(fù)雜的處理依賴于配置文件。 一個(gè)處理器就是初始處理某個(gè)階段的函數(shù)。同一個(gè)階段可以有多于一個(gè)處理器進(jìn)行處理,被叫做 apache序列。對(duì)應(yīng)每個(gè)階段有個(gè)缺省的 apache處理器 (大多數(shù)只做缺省動(dòng)作或者什么都不作 )。然后由其他的 apache模塊提供處理器,比如 mod_python。 mod_python提供了 apache每一個(gè)重要的處理器。 mod_python處理器缺省時(shí)不會(huì)做任何事情,除非用特定的配置文件標(biāo)志。這些標(biāo)志以 Python開始 并以 Handler結(jié)尾 (如: PythonAuthenHandler),指定 Python函數(shù)來(lái)處理指定的階段。所以 mod_python的主函數(shù)只是作為發(fā)報(bào)機(jī)的角色連接apache處理器和 Python函數(shù)。 最常用的處理器是 PythonHandler。它處理含有上下文的請(qǐng)求。因?yàn)樗鼪](méi)有名字,所以有時(shí)也成為通用處理器。這個(gè)處理器的 apache缺省行為是讀取文件并發(fā)送到客戶端。大多數(shù)應(yīng)用應(yīng)該重寫這個(gè)處理器。 我們假設(shè)有如下配置: Directory /mywebdir AddHandler mod_python .py PythonHandler myscript PythonDebug On /Directory 所以還需要一個(gè)如下文件, 39。/mywebdir/39。如下: from mod_python import apache def handler(req): =text/plain (Hello World!) return 如下的事情將會(huì)發(fā)生: AddHandler標(biāo)志告訴 apache所有的以 .py結(jié)尾的 39。/mywebdir39。下或其子目錄下的文件請(qǐng)求都由 mod_python負(fù)責(zé)處理。39。PythonHandler myscript39。標(biāo)志告訴 mod_python通用處理器在myscript腳本。 39。PythonDebug On39。標(biāo)志告訴 mod_python如果發(fā)生錯(cuò)誤,則把錯(cuò)誤信息輸出到客戶端,便于開發(fā)。 當(dāng)請(qǐng)求到來(lái)時(shí), apache開始分步驟處理請(qǐng)求并講請(qǐng)求發(fā)送到mod_python。 mod_python處理器檢查配置獲取處理器。在本例,我們除了通用處理器之外沒(méi)有調(diào)用其他 東西。當(dāng)讀取配置到 39。PythonHandler myscript39。時(shí),會(huì)發(fā)生下面的事情: ,假設(shè)預(yù)設(shè)目錄已經(jīng)存在于 。 myscript。注意子目錄是不在 ,如果需要只能按照包名的方式調(diào)用。 myscript中查找函數(shù) handler (關(guān)于請(qǐng)求對(duì)象的更多東西在后面 ) : from mod_python import apache 導(dǎo)入 apache模塊來(lái)獲取 apache的接 口。大多數(shù) mod_python程序需要有這一行。 def handler(req): 這是處理器函數(shù)的聲明。叫做 39。handler39。是因?yàn)?mod_python按照配置標(biāo)志尋找函數(shù)。將配置標(biāo)志轉(zhuǎn)換成小寫,然后去掉 39。python39。即可。這樣39。PythonHandler39。就成了 39。handler39。當(dāng)然也可以用其他的名字,但是需要用 39。::39。來(lái)分隔函數(shù)名,比如一個(gè)處理器函數(shù)叫 39。spam39。,那么配置標(biāo)志就是39。PythonHandler myscript::spam39。 注意,處理器必須包含一個(gè)請(qǐng)求對(duì)象參數(shù)。請(qǐng)求對(duì)象提供了關(guān) 于請(qǐng)求的大量信息,比如客戶端的 IP,請(qǐng)求頭, URL等。向客戶端發(fā)送信息也需要用到請(qǐng)求對(duì)象,這里是沒(méi)有 39。response39。對(duì)象的。 =text/plain 設(shè)置文檔 MIME類型為 39。text/plain39。缺省的是 39。text/html39。,但是如果處理器沒(méi)有打算返回 html,那么 39。text/plain39。更恰當(dāng) (appropriate)一些。特別注意:需要在 ,因?yàn)橐坏┱{(diào)用, HTTP響應(yīng)頭就被發(fā)送出去了,其后的 HTTP響應(yīng)頭的 改變都會(huì)忽略。 (Hello World!) 將會(huì)把字符串寫入到客戶端。 return 告知 apache,請(qǐng)求處理完成并成功。如果沒(méi)有返回 OK,則 apache會(huì)自動(dòng)返回為 return 。當(dāng)處理失敗時(shí)會(huì)在錯(cuò)誤日志中記錄,并告知客戶端一點(diǎn)錯(cuò)誤信息。 小技巧:如果你注意到,會(huì)發(fā)現(xiàn)如果請(qǐng)求的 URL不是指向 ,而只是一個(gè) .py結(jié)尾的文件,哪怕是一個(gè) 不存在的文件,也可以得到相同的結(jié)果。因?yàn)榉?wù)器只是將特定結(jié)尾的處理直接交給相關(guān)模塊的,而并不要求那一定是一個(gè)存在的文件。 認(rèn)證 現(xiàn)在,你知道寫一個(gè)處理器多么的簡(jiǎn)單,下面我們來(lái)顯示一個(gè)更復(fù)雜的例子。 如果需要用密碼來(lái)保護(hù)一個(gè)目錄。比如登錄名為 39。spam39。,密碼為 39。eggs39。 首先需要告訴 apache在需要認(rèn)證時(shí)調(diào)用我們的認(rèn)證處理器。加入PythonAuthenHandler標(biāo)志到配置文件: Directory /mywebdir AddHandler mod_python .py PythonHandler myscript PythonAuthenHandler myscript PythonDebug On /Directory 因?yàn)橐粋€(gè)模塊可以包含多個(gè)函數(shù),所以也可以在一個(gè)模塊中使用多個(gè)處理器。 然后是告知 apache,使用 Basic HTTP認(rèn)證。僅限有效用戶進(jìn)入。配置如下: Directory /mywebdir AddHandler mod_python .py PythonHandler myscript PythonAuthenHandler myscript PythonDebug On AuthType Basic AuthName Restricted Area require validuser /Directory 然后在 ,一個(gè)簡(jiǎn)單認(rèn)證函數(shù)如下: from mod_python import apache def authenhandler(req): pw=() user= if user==spam and pw==eggs: return else: return 如下是逐行解釋: def authenhandler(req): 認(rèn)證函數(shù)的聲明,至于為什么叫這個(gè)名字,自己可以參考命名規(guī)則。 pw=() 這里獲取密碼。 basic HTTP認(rèn)證采用 base64編碼發(fā)送到服務(wù)器。這個(gè)函數(shù)返回的直接就是密碼了。注意必須在獲取用戶名之前先獲取密碼。 user= 獲取用戶名 if user==spam and pw==eggs: return 對(duì)比用戶名和密碼的值,如果正確返回告知驗(yàn)證成功,并進(jìn)入下一個(gè)階段的處理。在本例里下一個(gè)階段是 handler()。 else: return 告知 apache驗(yàn)證失敗。這通常會(huì)導(dǎo)致客戶端瀏覽器彈出對(duì)話框要求用戶名和密碼。 實(shí)測(cè): 發(fā)現(xiàn)我使用的 ,一共兩種驗(yàn)證類型,一種是 Basic一種是 Digest,都是不允許的。就是按照如上例子。 終于實(shí)驗(yàn)成功了,最上面的配置必須寫在 ,寫在 .htaccess中無(wú)效。無(wú)論是否指定了 AllowOverride FileInfo都是。這樣進(jìn)入一個(gè)目錄之后會(huì)彈出系統(tǒng)的對(duì)話框提示輸入用戶名密碼。驗(yàn)證成功后只要瀏覽器不關(guān)閉就可以繼續(xù)進(jìn)入這個(gè)目錄,但是關(guān)閉后就需要再次驗(yàn)證。 404處理器 在某些時(shí)候,如果希望返回 404(HTTP_NOT_FOUND)或者其他非 200的結(jié)果到客戶端,這里有個(gè)竅門。如果從你的處理器返回 HTTP_NOT_FOUND, apache將會(huì)生成錯(cuò)誤頁(yè)。但是卻未必是你喜歡的錯(cuò)誤頁(yè)。 這時(shí),你只要 設(shè)置 =,提交你的頁(yè)面,然后返回 : from mod_python import apache def handler(req): if [17:]==39。39。: 放行 apache的錯(cuò)誤頁(yè) if [18:]==39。39。: 使用自己的錯(cuò)誤頁(yè) = pagebuffer=39。頁(yè)面不存在 39。 else: 使用文件內(nèi)容 pagebuffer=open(,39。r39。).read() 輸出錯(cuò)誤頁(yè) (pagebuffer) return() 完成 ... 第四章 Python API 使用 mod_python工作的時(shí)候應(yīng)該理解,并不是使用 Python在命令行下寫腳本,而是用 Python調(diào)用 C語(yǔ)言 API。 Python的 C語(yǔ)言 API提供了創(chuàng)建子解釋器的能力。關(guān)于子解釋器的更多信息詳見 Py_NewInterpreter()函數(shù)。在這里,每個(gè)子解釋器擁有獨(dú)立的命名空間,并與其他子解釋器不可訪問(wèn)。子解釋器非常適合于理解同一個(gè)服務(wù)器中處理各個(gè)請(qǐng)求的進(jìn)程。 服務(wù)器啟動(dòng) mod_python的時(shí)候會(huì)啟動(dòng)一個(gè)主解釋器。主解釋器包含子解釋器詞典。剛開始詞典是空的。對(duì)應(yīng)每一個(gè)請(qǐng)求就會(huì)創(chuàng)建一個(gè)子解釋器,并將引用存儲(chǔ)在詞典里。這個(gè)詞典用解釋器名作為鍵名,主解釋器叫做39。main_interpreter39。其他的解釋器受到 PythonInterp*的控制。缺省的行為是使用 apache虛擬服務(wù)器名來(lái)命名 (ServerName標(biāo)志 )。這意味著同一個(gè)虛擬服務(wù)器中的腳本在同一個(gè)子解釋器中執(zhí)行,但不再同一個(gè)虛擬服務(wù)器中的腳本因?yàn)椴煌淖咏忉屍鞫鵁o(wú)法互相訪問(wèn)。 PythonInterpPerDirectory和 PythonInterpPerDirective標(biāo)志改變 (alter)命名慣例 (convention)到要存取的絕對(duì)路徑,或者在Python*Handler可以訪問(wèn)到的地方,分別的 (respectively)。PythonInterpreter能夠強(qiáng)制使用解釋器名重載所有的命名慣例。 一旦創(chuàng)建,一個(gè)子解釋器將會(huì)被接踵而來(lái)的請(qǐng)求 重用,在 apache停止之前不會(huì)被銷毀。從調(diào)用 。 參考 Python的 C語(yǔ)言 API: (request)處理器 一個(gè)請(qǐng)求處理器是處理請(qǐng)求階段細(xì)節(jié)的處理器。 apache在處理請(qǐng)求的每一個(gè)階段都對(duì)調(diào)用相應(yīng)的處理器。對(duì)每一個(gè)階段都會(huì)調(diào)用請(qǐng)求處理器,由apache的核心或者模塊提供,比如 mod_python由用戶的 Python函數(shù)提供。用 Python書寫的處理器 只要遵守如下規(guī)則就與 C寫的沒(méi)有區(qū)別: 處理器函數(shù)總是會(huì)傳遞請(qǐng)求對(duì)象的引用,一般是 req變量。 每個(gè)處理器可以返回如下: ? :這個(gè)階段處理無(wú)誤 ? :這個(gè)階段處理過(guò)后還需要隊(duì)列中的其他模塊處理 ? :發(fā)生了 HTTP錯(cuò)誤,如下值: HTTP_CONTINUE 100 HTTP_SWITCHING_PROTOCOLS 101 HTTP_PROCESSING 102 HTTP_OK 200 HTTP_CREATED 201 HTTP_ACCEPTED 202 HTTP_NON_AUTHORITATIVE 203 HTTP_NO_CONTENT 205 HTTP_PARTIAL_CONTENT 206 HTTP_MULTI_STATUS 207 HTTP_MULTIPLE_CHOICES 300 HTTP_MOVED_PERMANENTLY 301 HTTP_MOVEDTEMPORARILY 302 HTTP_SEE_OTHER 303 HTTP_NOT_MODIFIED 304 HTTP_USE_PROXY 305 HTTP_TEMPORARY_REDIRECT 307 HTTP_BAD_REQUEST 400 HTTP_UNAUTHORIZED 401 HTTP_PAYMENT_REQUIRED 402 HTTP_FORBIDDEN 403 HTTP_NOT_FOUND 404 HTTP_METHOD_NOT_ALLOWED 405 HTTP_NOT_ACCEP
點(diǎn)擊復(fù)制文檔內(nèi)容
試題試卷相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1