鍍金池/ 教程/ Python/ 為做網站而準備
標準庫 (4)
如何成為 Python 高手
標準庫 (6)
標準庫 (3)
類(2)
Pandas 使用 (2)
xml
用 tornado 做網站 (5)
文件(1)
練習
列表(3)
從小工到專家
除法
錯誤和異常 (2)
函數(1)
用 tornado 做網站 (7)
為做網站而準備
函數練習
標準庫 (8)
Pandas 使用 (1)
回顧 list 和 str
字典(1)
用 tornado 做網站 (3)
字符串(1)
函數(2)
寫一個簡單的程序
將數據存入文件
語句(5)
SQLite 數據庫
集成開發(fā)環(huán)境(IDE)
集合(1)
類(1)
用 tornado 做網站 (6)
用 tornado 做網站 (2)
自省
語句(4)
錯誤和異常 (1)
用 tornado 做網站 (4)
集合(2)
列表(1)
標準庫 (1)
生成器
mysql 數據庫 (1)
第三方庫
實戰(zhàn)
運算符
類(3)
字典(2)
語句(1)
數和四則運算
語句(2)
文件(2)
MySQL 數據庫 (2)
電子表格
迭代器
mongodb 數據庫 (1)
特殊方法 (2)
特殊方法 (1)
字符編碼
編寫模塊
用 tornado 做網站 (1)
標準庫 (5)
函數(4)
類(5)
字符串(2)
關于 Python 的故事
函數(3)
字符串(4)
處理股票數據
常用數學函數和運算優(yōu)先級
字符串(3)
為計算做準備
多態(tài)和封裝
類(4)
迭代
語句(3)
錯誤和異常 (3)
分析 Hello
Python 安裝
標準庫 (2)
列表(2)
元組

為做網站而準備

作為一個程序猿一定要會做網站。這也不一定吧,貌似是,但是,如果被人問及此事,如果說自己不會,的確羞愧難當呀。所以,本教程要講一講如何做網站。

推薦閱讀:History of the World Wide Web

首先,為自己準備一個服務器。這個要求似乎有點過分,作為一個普通的窮苦聊到的程序員,哪里有銅鈿來購買服務器呢?沒關系,不夠買服務器也能做網站,可以購買云服務空間或者虛擬空間,這個在網上搜搜,很多。如果購買這個的銅鈿也沒有,還可以利用自己的電腦(這總該有了)作為服務服務器。我就是利用一臺裝有 ubuntu 操作系統(tǒng)的個人電腦作為本教程的案例演示服務器。

然后,要在這個服務器上做一些程序配置。一些必備的網絡配置這里就不說了,比如我用的 ubuntu 系統(tǒng),默認情況都有了。如果讀者遇到一些問題,可以搜一下,網上資料多多。另外的配置就是 Python 開發(fā)環(huán)境,這個應該也有了,前面已經在用了。

接下來,要安裝一個框架。本教程中制作網站的案例采用 tornado 框架。

在安裝這個框架之前,先了解一些相關知識。

開發(fā)框架

對框架的認識,由于工作習慣和工作內容的不同,有很大差異,這里姑且截取維基百科中的一種定義,之所以要給出一個定義,無非是讓看官有所了解,但是是否知道這個定義,絲毫不影響后面的工作。

軟件框架(Software framework),通常指的是為了實現(xiàn)某個業(yè)界標準或完成特定基本任務的軟件組件規(guī)范,也指為了實現(xiàn)某個軟件組件規(guī)范時,提供規(guī)范所要求之基礎功能的軟件產品。

框架的功能類似于基礎設施,與具體的軟件應用無關,但是提供并實現(xiàn)最為基礎的軟件架構和體系。軟件開發(fā)者通常依據特定的框架實現(xiàn)更為復雜的商業(yè)運用和業(yè)務邏輯。這樣的軟件應用可以在支持同一種框架的軟件系統(tǒng)中運行。

簡而言之,框架就是制定一套規(guī)范或者規(guī)則(思想),大家(程序員)在該規(guī)范或者規(guī)則(思想)下工作。或者說就是使用別人搭好的舞臺,你來做表演。

我比較喜歡最后一句的解釋,別人搭好舞臺,我來表演。這也就是說,如果在做軟件開發(fā)的時候,能夠減少工作量。就做網站來講,其實需要做的事情很多,但是如果有了開發(fā)框架,很多底層的事情就不需要做了(都有哪些底層的事情呢?讀者能否回答?)。

有高手工程師鄙視框架,認為自己編寫的才是王道。這方面不爭論,框架是開發(fā)中很流行的東西,我還是固執(zhí)地認為用框架來開發(fā),更劃算。

Python 框架

有人說 php(什么是 php,嚴肅的說法,這是另外一種語言,更高雅的說法,是某個活動的漢語拼音簡稱)框架多,我不否認,php 的開發(fā)框架的確很多很多。不過,Python 的 web 開發(fā)框架,也足夠使用了,列舉幾種常見的 web 框架:

  • Django:這是一個被廣泛應用的框架。在網上搜索,會發(fā)現(xiàn)很多公司在招聘的時候就說要會這個。框架只是輔助,真正的程序員,用什么框架,都應該是根據需要而來。當然不同框架有不同的特點,需要學習一段時間。
  • Flask:一個用 Python 編寫的輕量級 Web 應用框架。基于 Werkzeug WSGI 工具箱和 Jinja2 模板引擎。
  • Web2py:是一個為 Python 語言提供的全功能 Web 應用框架,旨在敏捷快速的開發(fā) Web 應用,具有快速、安全以及可移植的數據庫驅動的應用,兼容 Google App Engine。
  • Bottle: 微型 Python Web 框架,遵循 WSGI,說微型,是因為它只有一個文件,除 Python 標準庫外,它不依賴于任何第三方模塊。
  • Tornado:全稱是 Tornado Web Server,從名字上看就可知道它可以用作 Web 服務器,但同時它也是一個 Python Web 的開發(fā)框架。最初是在 FriendFeed 公司的網站上使用,F(xiàn)aceBook 收購了之后便開源了出來。
  • webpy: 輕量級的 Python Web 框架。webpy 的設計理念力求精簡(Keep it simple and powerful),源碼很簡短,只提供一個框架所必須的東西,不依賴大量的第三方模塊,它沒有 URL 路由、沒有模板也沒有數據庫的訪問。

說明:以上信息選自:http://blog.jobbole.com/72306/,這篇文章中還有別的框架,由于不是 web 框架,我沒有選摘,有興趣的去閱讀。

Tornado

本教程中將選擇使用 Tornado 框架。此前有朋友建議我用 Django,首先它是一個好東西。但是,我更愿意用 Tornado,為什么呢?因為......,看下邊或許是理由,或許不是。

Tornado 全稱 Tornado Web Server,是一個用 Python 語言寫成的 Web 服務器兼 Web 應用框架,由 FriendFeed 公司在自己的網站 FriendFeed 中使用,被 Facebook 收購以后框架以開源軟件形式開放給大眾??磥?Tornado 的出身高貴呀,對了,某國可能風聞有 Facebook,但是要一睹其芳容,還要努力。

用哪個框架,一般是要結合項目而定。我之選用 Tornado 的原因,就是看中了它在性能方面的優(yōu)異表現(xiàn)。

Tornado 的性能是相當優(yōu)異的,因為它試圖解決一個被稱之為“C10k”問題,就是處理大于或等于一萬的并發(fā)。一萬呀,這可是不小的量。(關于 C10K 問題,看官可以瀏覽:C10k problem)

下表是和一些其他 Web 框架與服務器的對比,供看官參考(數據來源: https://developers.facebook.com/blog/post/301

條件:處理器為 AMD Opteron, 主頻 2.4GHz, 4 核

服務 部署 請求/每秒
Tornado nginx, 4 進程 8213
Tornado 1 個單線程進程 3353
Django Apache/mod_wsgi 2223
web.py Apache/mod_wsgi 2066
CherryPy 獨立 785

看了這個對比表格,還有什么理由不選擇 Tornado 呢?

就是它了——Tornado

安裝 Tornado

Tornado 的官方網站:http://www.tornadoweb.org

我在自己電腦中(是我目前使用的服務器),用下面方法安裝,只需要一句話即可:

pip install tornado

這是因為 Tornado 已經列入 PyPI,因此可以通過 pip 或者 easy_install 來安裝。

如果不用這種方式安裝,下面的頁面中有可以供看官下載的最新源碼版本和安裝方式:https://pypi.python.org/pypi/tornado/

此外,在 github 上也有托管,看官可以通過上述頁面進入到 github 看源碼。

我沒有在 windows 操作系統(tǒng)上安裝過這個東西,不過,在官方網站上有一句話,可能在告訴讀者一些信息:

Tornado will also run on Windows, although this configuration is not officially supported and is recommended only for development use.

特別建議,在真正的工程中,網站的服務器還是用 Linux 比較好,你懂得(嗎?)。

技術準備

除了做好上述準備之外,還要有點技術準備:

  • HTML
  • CSS
  • JavaScript

我們在后面實例中,不會搞太復雜的界面和 JavaScript(JS) 操作,所以,只需要基本知識即可。


總目錄   |   上節(jié):實戰(zhàn)-引   |   下節(jié):分析 Hello

如果你認為有必要打賞我,請通過支付寶:qiwsir@126.com,不勝感激。

上一篇:用 tornado 做網站 (3)下一篇:字典(1)