首頁 >後端開發 >Python教學 >Django基礎教程總結

Django基礎教程總結

WBOY
WBOY原創
2017-06-28 12:00:241274瀏覽

對於所有的web應用,本質上其實就是一個socket服務端,用戶的瀏覽器其實就是一個socket客戶端。

一個簡單的web程式:

#!/usr/bin/env python
#coding:utf-8
 
import socket
 
def handle_request(client):
    buf = client.recv(1024)
    client.send("HTTP/1.1 200 OK\r\n\r\n")
    client.send("Hello, Seven")
 
def main():
    sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    sock.bind(('localhost',8000))
    sock.listen(5)
 
    while True:
        connection, address = sock.accept()
        handle_request(connection)
        connection.close()
 
if __name__ == '__main__':
    main()

python web程式一般會分為伺服器程式和應用程式。伺服器程式負責對socket伺服器進行封裝,並在請求到來時對請求的各種資料進行整理。應用程式則負責具體的邏輯處理。為了方便應用程式的開發,就出現了眾多的web框架。例如Django,Flask,web.py等。

不同的框架有不同的開發方式,但是無論如何,開發出的應用程式都要和伺服器程式配合,再能為使用者提供服務。這樣,伺服器程式就需要為不同的框架提供不同的支援。這樣混亂的局面無論對伺服器或框架,都是不好的。對伺服器來說,需要支援各種不同框架,對框架來說只有支援它的伺服器才能被開發出的應用程式使用。這時候,標準化就變的尤為重要。我們可以設立一個標準,只要伺服器程式支援這個標準,框架也支援這個標準,那麼他們就可以配合使用。一旦標準確定,雙方各自實現。這樣,伺服器可以支援更多支援標準的框架,框架也可以使用更多支援標準的伺服器。

 

WSGI

web server gateway interface 是一種規範,它定義了使用python編寫的web app與web server 之間的介面格式,實作   web app與web server間的解耦。

python標準函式庫提供的獨立的wsgi伺服器稱為wsgiref

#!/usr/bin/env python
#coding:utf-8
from wsgiref.simple_server import make_server
def RunServer(environ, start_response):
    start_response('200 OK', [('Content-Type', 'text/html')])
    return &#39;<h1>Hello, web!</h1>&#39;
if __name__ == &#39;__main__&#39;:
    httpd = make_server(&#39;&#39;, 8000, RunServer)
    print "Serving HTTP on port 8000..."
    httpd.serve_forever()

自訂web框架

透過python標準函式庫提供的wsgiref模組開發一個自己的網頁框架

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


#

以上是Django基礎教程總結的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn