python學習筆記-Day17 - web框架

web服務器和web客戶端之間的網絡通信,本質上是 socket的通信, 服務器端運行的是socketServer 客戶端運行的是socketClient.


對於python web程序來說,一般來說會分爲兩部分,服務器程序\應用程序,  (jsp好像也是這樣的,讓我想起了java的war包,不是太瞭解,只知道這些war包可以組成jsp上的應用).

服務器程序:負責對socket服務器進行封裝,在請求到來的時候,對請求進行整理,

應用程序   : 負責具體的業務邏輯處理,


爲了方便應用程序的開發,出現了很多web框架, python的web框架有 django flask web.py tornado等等

不同的框架的開發方式不盡相同, 但都需要 應用程序和服務器程序配合使用, 併爲用戶提供服務.

但是服務器要爲不同的框架提供支持,如果沒有一個統一的標準, 那麼局面會很混亂,無論對服務器還是對於框架 都是不好的, 關鍵是開發會很累. 所以標準很重要, 

按照一個統一的標準進行開發, 如果服務器程序 和 應用程序都支持這個統一的標準, 那麼兩者就可以配合使用,一旦標準確定, 雙方各自實現,(就好像螺絲釘 和螺帽 )


這樣服務器可以支持更多支持該標準的框架  ,框架也可以使用更多 支持標準的服務器   (互利互惠)



WSGI(Web Server Gateway Interface) 是Web服務器與Web應用程序或應用框架之間的一種低級別的接口,可以提升可移植Web應用開發的共同點.


WSGI就像是一座橋樑,一邊連着web服務器,另一邊連着用戶的應用。但是呢,這個橋的功能很弱,有時候還需要別的橋來幫忙才能進行處理。



    SERVER <--->   wsgi  <--->   APP


我們可以先寫一個簡單的框架:


struct.py

#!/usr/bin/env python
#coding:utf-8
from wsgiref.simple_server import make_server
 
def index():
    return 'index'
 
def login():
    return 'login'
     
urlpatterns = [
    ('/index/',index),
    ('/login/',login),
]
 
def RunServer(environ, start_response):
    start_response('200 OK', [('Content-Type', 'text/html')])
    url = environ['PATH_INFO']
    func = None
    for item in urlpatterns:
        if item[0] == url:
            func = item[1]
            break
    if func:
        return func()
    else:
        return '404 not found'
     
if __name__ == '__main__':
    httpd = make_server('', 8000, RunServer)
    print "Serving HTTP on port 8000..."
    httpd.serve_forever()



模板引擎:

參考jinja2 http://timesnotes.blog.51cto.com/1079212/1748411 




在使用web框架的時候,我們需要注意兩個名字 MVC  MTV(不是music TV)


MVC : 指的是 模型-視圖-控制器 模式 

# models          views        controllers

# 數據庫處理    html模板          處理請求(函數)


MTV : 指的是 模型-模板-視圖 模式 

# models          templates     views

# 數據庫處理      html模板     處理請求(函數)


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