Python語言動態WEB開發學習總結
一,語言,
學習python後,認爲一個好的動態語言應該,
虛擬機,一次編寫到處執行
泛類型,但不是無類型
OOP的實現(繼承,重載等等)
現代的,強大的詞法 語法
二,Web Framework或Web protocol,
作爲一個動態web程序框架,必須處理的有,
URL Dispatch
Form Process [POST GET處理]
Session(Cookie)
Http header
再高級點的還應有,
Role management(authentication)
DBMS(ORM)
xML templates
Cache
等等
三,CGI篇,
在學習CGI前,必須理解什麼是Web Browser, 什麼是Web Server. 以及他們之間的"語言"--http協議, 以及"會話"過程
早期,Web Browser只能從Web server那裏請求到事先編輯好的存放在Server機器上面的文字內容,圖片內容或文件,沒有現在Web browser發送不同內容的請求,更不會Web server相應這樣的請求.
後來,就有了active server page慾望,猜想教本語言誕生的原因是,實現對這種Browser端發過來的會變化的請求進行判斷後生成不同的html字串的動作不可能"硬"寫在Wb server程序裏面.
沒有考究過歷史是否曾經出現過許多這種功能的腳本語言,但是從現在僅存的主流的Web Server IIS, Apache, Tomcat來看(他們之間互相橋接,互通有無又是後話),主流的被這兩個Server程序支持的腳本也就是微軟的ASP和開源世界的PHP.
事情至此以後本該是平靜的日子,可要計算機技術這個世界永遠的變化就是技術間的不斷地分化,又不斷地融合. 只有Asp 和PHP能生產動態頁面的生產工作? C/C++ Pascal Fortran等這些"傳統"語言也都想, 所以
CGI誕生了. Common Gate interface
#!/bin/sh
echo Content-type: text/html
echo "<HTML><HEAD>"
echo "<TITLE>Is Laura There?</TITLE>"
echo
看上面一段標準CGI代碼,設計思路基本就是將原本一次寫在html文件的字符,用編程語言的方式一句一句運行地輸出
四,WSGI,
時間到了2005年,之前Python通過CGI也成功地將自己融合到了web開發這個領域.但是Python使用者發現,他們開始愈來愈先在選擇合適的 組件,合適方式繼承先前代碼上面花費時間.車輪子一遍一遍地重造,整合一次一次進行. 是不是該在Python自己世界裏面來協議什麼的? 於是Phillip J. Eby提出了WSGI的初步概念,現在在PEP0333中看到是幾經修改的被追蹤確認的,
WSGI allows coummunication between web servers and python web applications.
WSGI描述了這樣兩種行爲,
Web server調用application'提供'的function或callable object,傳入environ 和start_response
其中environ必須是python字典類型,裏面保函CGI式的環境變量
Application調用web server傳遞來的start_response, 傳入status和head list, 最後返回 字符list或 iterator
status是http狀態, head list爲; 返回string list是html的body
classic codes,
def application(environ,start_response)
status = '200 OK'
response_headers = [('Content-type','text/plain')]
start_response(status, response_headers)
return ['Hello word']
五,其他
最後所說,我碰到的,並從功能劃分的framework
--------------第一代
Karrigell
--------------第二代
CherryPy Quixote
--------------第三代 (早期)
TurboGears Django Pylons
第三代(中期)
Uliweb Web2py web.py
MVC
WSGI
/|/
URL Dispatch
VIEW Model
View, cheetah kid mygth genshi
ORM, SQLObject SQLAlchemy
Control, web.py cherrypy Route Paste
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.