Python網絡編程基礎(5)續——mod_python.doc

mod_python

19 mod_python

1.    測試

test.py

修改配置文件,添加如下內容

        <Directory /var/www/foundations/>

                Options Indexes FollowSymLinks MultiViews

                AllowOverride AuthConfig

                Order allow,deny

                allow from all

 

                AddHandler mod_python .py

                PythonHandler test

                PythonDebug On

        </Directory>

這個配置方法和書上的不太一樣,在測試的時候url也是localhost/foundation/test.py。在使用瀏覽器瀏覽的時候,test.pyhandler函數會自動地被調用。

2.    分派請求

dispatcher.py根據req.uri來確定要調用的模塊。爲了測試,首先需要再次修改配置文件:

                AddHandler mod_python .py

                PythonHandler dispather

                PythonDebug On

由於配置和書上不同,除了url要以.py爲結尾之外,還要將dispatcher.pygethandlername的正則"/([a-zA-Z0-9_-]+)/.prog($|/|/?)"修改爲"/([a-zA-Z0-9_-]+)/.py($|/|/?)"。完成修改之後訪問localhost/foundation/test.py,測試正常。不過當訪問不存在的module的時候,程序中傳遞給404的字符串並不會顯示出來,看來只是給日誌用的。

3.    處理輸入

pathinfo.pyget.pypost.py都是處理輸入的例子,只不過分別採用不同的方法:pathinfo.py分析urlget.py使用get方法;post.py構造表單,採用post方法提交。在getpost的例子中都用到了mod_python. util. FieldStorage,例如:

form = util.FieldStorage(req)

之後就可以使用form.getfirst('month')來訪問getpost提交的數據了。

4.    轉義

escape.py介紹了提交數據和現實數據時的轉義。關鍵的兩句是:

                   urllib.quote_plus(form.getfirst('data')),

                   cgi.escape(form.getfirst('data'))))

其中quote_plus進行的實際是HTML實體的轉移,用於展示內容的時候使用。而escape則是進行的是URL的轉移,例如空格等等不能直接出現在網址中的符號。

 

以上例子在不修改Apache配置文件的情況下(採用dispacther處理),可以直接訪問文件名測試。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章