python在不用框架的情況下如何寫網站後台?
python在不用框架的情況下如何寫網站後台
可以嘗試使用 WSGI,類似 Java 的 servlet ,只是定義了一套框架與伺服器交互的介面規範,參考 PEP 333 -- Python Web Server Gateway Interface v1.0
寫出來最簡單的應用是這樣的:def simple_app(environ, start_response):
status = "200 OK"
response_headers = [("Content-type", "text/plain")]
start_response(status, response_headers)
return ["Hello world!
"]
要運行的話,使用任意支持 WSGI 的伺服器跑就行了,比如 apache(配合 mod_wsgi),uwsgi,gunicorn, 還有標準庫內置的 wsgiref。
然後在此之上可以實現任意的路由解析,參數傳遞,cookie,session 等等,相當於自己實現了一個 Python 的 web 框架。常見的 Python web 框架就是幫你做了這部分工作。
如果覺得使用 WSGI 的伺服器都算使用框架了的話,就只能拿 socket 裸寫了。只實現一個 just work 的也很簡單,還可以參考 wsgiref 的實現。
還有一種方式就是使用 CGI,就是寫一個正常的 Python 腳本,CGI 伺服器會把你的腳本當命令執行,用戶傳遞的參數用環境變數來傳遞,你自己拿就是。返回結果就是列印出來的內容。Django的翻譯文檔有這麼一段話:
如果你曾編寫過網路應用程序。 那麼你很有可能熟悉之前我們的 CGI 例子。
從頭開始編寫網路應用程序。從頭編寫另一個網路應用程序。從第一步中總結(找出其中通用的代碼),並運用在第二步中。重構代碼使得能在第 2 個程序中使用第 1 個程序中的通用代碼。重複 2-4 步驟若干次。
意識到你發明了一個框架。這正是為什麼 Django 建立的原因!你不用框架最後還不是得實現框架,是吧。何必重複造輪子,當然如果是將馬車升級為汽車,那就不是造輪子了。可以去看看廖雪峰的教程,他就是自己實現的框架,還有常式很詳細Python自帶CGI庫,就叫cgi
寫法類似幾十年前的perl寫網站。你需要自己處理session、cookie,以及URL routing。
性能也是不行的:每個http請求對應一次python腳本執行。
學習一下可以,不要自虐了。PHP可以這麼干是因為PHP本身除了語言之外還有一個隨語言自帶的web framework(見過哪個語言有session_start類似的函數?)python標準庫中的basehttpserver適合你,閱讀下源碼你就知道了
推薦 Python教程 - 廖雪峰的官方網站 別說你不用框架的情況下讀了這個能寫,連還不懂 Python 讀完都能寫。
看看這個A Do-It-Yourself Framework
呃??把 bottle.py 裡面 http handle 的部分 control-c 過來 這樣差不多一百行左右(幾個錯誤碼什麼的)如果超級純靜態就只要copy get 的部分隨著越來越多的需求??不知不覺的你又寫了一個框架??
flask、bottle、tornado這種微框架也不行么?
那werkzeug呢?
比如uwsgi+werkzeug+自己實現wsgi applicationflask不就是包裝werkzeug的wsgi application么再加個按需指定的資料庫模塊、session模塊什麼的werkzeug也嫌大的話,那需要實現的東西就有點多了吧,http解析、url解析、url route等等,那就有點划不來了吧那何必用python,不如直接c??
不造輪子,是python的基本哲學(?)實現wsgi即可,但。。。你真的不需要框架嗎
推薦閱讀:
※如何使用Python實現多進程編程?
※現在學完Python的就業形勢怎麼樣?
※有沒有什麼值得推薦的輕量級Python IDE?
※Python中 交換整個字典的鍵與值 最快和最簡潔的方法分別是什麼?
※什麼時候會用到python裝飾器?