標籤:
1 寫在前面
在沒有接觸互連網這個行業的時候,我就一直很好奇網站是怎麼構建的。現在雖然從事互連網相關的工作,但是也一直沒有接觸過Web開發之類的東西,但是興趣終歸還是要有的,而且是需要自己動手去實踐的。Web開發的途徑有好多種,比如傳統的.Net,還有很火爆的Java。Python作為一種靈活好學的指令碼語言,已經越來越受程式員的歡迎和熱捧,甚至成為程式員的必備技能。Django是Python的Web開放架構,好多人說學習Python就是在學Django,從這也可以看出Django的強大。博主也是剛剛接觸Django,純屬個人興趣愛好,望與廣大博友共同學習和討論。
2 什麼是Web開發?
在介紹什麼是Web開發之前,先簡單提及一下大家熟悉的WWW。WWW(World Wide Web)簡稱全球資訊網。通俗地說,WWW是一套技術規範,它裡麵包含很多技術和協議,例如html技術、url、http協議等。人們通過這套技術規範,可以對Internet網路上主機的資源進行描述,進而可以通過一個WWW的用戶端訪問這些資源。常用的WWW用戶端有IE、Foxfire等瀏覽器。
由於WWW技術的出現,人們可以在世界上的任何一個角落,通過一個瀏覽器訪問網際網路上任何一台遠端電腦上的資源,或與遠端電腦進行通訊。20世紀由於WWW技術的出現,因而誕生了“地球村”的概念。
而Web就是用來表示Internet主機上供外界訪問的資源的。在英語中web即表示網頁的意思,網頁也統稱為web資源。Internet上供外界訪問的Web資源主要分為如下兩類:
靜態web資源:指web頁面中供人們瀏覽的資料始終是不變的,例如,html頁面;
動態web資源:指web頁面中供人們瀏覽的資料是由程式產生的,不同時間點訪問web頁面看到的內容各不相同。
微軟對Web開發的定義:Web開發是一個指代網頁或網站編寫過程的廣義術語。這些頁面可能是類似於文檔的簡單文本和圖形。頁面也可以是互動,或顯示變化的資訊。編寫互動式伺服器頁面略微複雜一些,但卻可以實現更豐富的網站。如今的大多數頁面都是互動,並提供了購物車、動態可視化甚至複雜的社交網路等現代線上服務。
通俗的說,web開發就是我們說的做網站。它分為網頁部分和邏輯部分也就是我們說的前台與後台,前台負責與使用者的互動,顯示資料。用到HTML顯示資料,CSS控制樣式,JS編寫複雜互動。後台編寫處理這些邏輯的程式,可以用C#,java,php等語言。
現在web應用程式已經和我們的生活息息相關,小到我們的部落格,空間,大到大型社交網站如facebook、人人等。更複雜的如電子商務中的C2C,B2B等網站,都給我們帶來了很大的方便。
那麼Web開發與CS開發有什麼區別呢?
C/S結構,即Client/Server(客戶機/伺服器)結構,是大家熟知的軟體系統體繫結構,通過將任務合理分配到Client端和Server端,降低了系統的通訊開銷,可以充分利用兩端硬體環境的優勢。
B/S結構,即Browser/Server(瀏覽器/伺服器)結構,是隨著Internet技術的興起,對C/S結構的一種變化或者改進的結構。在這種結構下,使用者介面完全通過WWW瀏覽器實現,一部分事務邏輯在前端實現,但是主要事務邏輯在伺服器端實現,形成所謂3-tier(三層架構)結構。B/S結構利用不斷成熟和普及的瀏覽器技術實現原來需要複雜專用軟體才能實現的強大功能,並節約了開發成本,是一種全新的軟體系統構造技術,這種結構更成為當今應用軟體的首選體繫結構。
首先必須強調的是C/S和B/S並沒有本質的區別:B/S是基於特定通訊協定(HTTP)的C/S架構,也就是說B/S包含在C/S中,是特殊的C/S架構。
從根本上說,CS開發更適合開發單機的應用程式,或者比較固定商務邏輯,而且對硬體要求較高的程式。比如:一些應用軟體,如殺毒軟體,教學軟體這些與伺服器邏輯互動較少,而且程式與用戶端硬體有密切聯絡的程式。
而BS開發趨向於電子商務、社交網路等這些需要服務端密切配合的軟體。他由於用戶端只有一個瀏覽器,開發方便,使用者體驗簡潔,但是會受到網路通訊的限制,必須考慮伺服器效能。
3 什麼是Django?
借用djangobook中的一段話介紹來解釋一下Django到底是什麼。“Django是一個可以使Web開發工作愉快並且高效的Web開發架構。使用Django,使你能夠以最小的代價構建和維護高品質的Web應用。”
從好的方面來看,Web 開發激動人心且富於創造性;從另一面來看,它卻是份繁瑣而令人生厭的工作。 通過減少重複的代碼,Django 使你能夠專註於 Web 應用程式上有 趣的關鍵性的東西。 為了達到這個目標,Django 提供了通用Web開發模式的高度抽象,提供了頻繁進行的編程作業的快速解決方案,以及為“如何解決問題”提供了清晰明了的約定。 同時,Django 嘗試留下一些方法,來讓使用者根據需要在framework之外來開發。
4 MVC架構介紹
MVC全名是Model View Controller,是模型(model)-視圖(view)-控制器(controller)的縮寫,一種軟體設計典範,用一種商務邏輯、資料、介面顯示分離的方法組織代碼,將商務邏輯聚集到一個組件裡面,在改進和個人化定製介面及使用者互動的同時,不需要重新編寫商務邏輯。MVC被獨特的發展起來用於映射傳統的輸入、處理和輸出功能在一個邏輯的圖形化使用者介面的結構中。
簡單的說, MVC 是一種軟體開發的方法,它把代碼的定義和資料訪問的方法(模型)與請求邏輯 (控制器)還有使用者介面(視圖)分開來。 這種設計模式關鍵的優勢在於各種組件都是 鬆散結合 的。這樣,每個由 Django驅動 的Web應用都有著明確的目的,並且可獨立更改而不影響到其它的部分。 比如,開發人員 更改一個應用程式中的 URL 而不用影響到這個程式底層的實現。 設計師可以改變 HTML 頁面 的樣式而不用接觸 Python 代碼。 資料庫管理員可以重新命名資料表並且只需更改一個地方,無需從一大堆檔案中進行尋找和替換。
5 Python Django的安裝
首先,在Django官網上下載適合自己Python的Django版本,現在官方發布的最新版本是Django1.8.2。在安裝Django前首先確定你已成功安裝了python。
Windows系統下安裝Django:
解壓縮下載的Django壓縮包,找到裡面的setup.py檔案,然後開啟cmd命令視窗,在其對應的路徑下執行如下命令:
python setup.py install
Linux系統下安裝Django:
以此在shell中輸入如下命令:
$ tar xzvf Django-*.tar.gz$ cd Django-*$ sudo python setup.py install
確認Django是否成功安裝:
在python IDE下輸入:
import djangodjango.VERSION
如果你看到如下結果,就說明你的Django已經成功安裝了:
(1, 8, 2, ‘final‘, 0)
6 運行程式開發伺服器
一但你安裝好了python,django和(可選的)資料庫及相關庫,你就可以通過建立一個project,邁出開發django應用的第一步。
首先,開始建立第一個項目。
找到你的django-admin.py檔案,並把它加入系統路徑。如果用的是setup.py工具安裝的Django,django-admin.py應該已被加入了系統路徑中。樓主的django-admin.py目錄為C:\Python27\Lib\site-packages\Django-1.8.2-py2.7.egg\django\bin。
進入該目錄下,運行如下命令,建立一個項目:
python django-admin.py startproject mysite
startproject命令建立一個目錄,包含一個名為mysite的檔案夾和一個名為manage.py的檔案。其中mysite檔案夾下包含有四個檔案,分別為:
__init__.py
settings.py
urls.py
wsgi.py
為了安裝後更多的體驗,讓我們運行一下django程式開發伺服器看看我們的准系統。django開發服務是可用在開發期間的,一個內建的,輕量的web服務。 我們提供這個伺服器是為了讓你快速開發網站,也就是說在準備發布產品之前,無需進行產品級 Web 服務器(比如 Apache)的配置工作。 程式開發伺服器監測你的代碼並自動載入它,這樣你會很容易修改代碼而不用重啟動服務。如果你還沒啟動伺服器的話,請切換到你的項目目錄裡 (cd mysite),運行下面的命令:
python manage.py runserver
你會看到如下內容:
Django version 1.8.2, using settings ‘mysite.settings‘
Starting development server at http://127.0.0.1:8000/
Quit the server with CTRL-BREAK
這將會在連接埠8000啟動一個本機伺服器, 並且只能從你的這台電腦串連和訪問。 既然伺服器已經運行起來了,現在用網頁瀏覽器訪問 http://127.0.0.1:8000/ 。 你應該可以看到一個令人賞心悅目的淡藍色Django歡迎頁面。 它開始工作了。
介面如下所示:
注意:雖然 django 內建的這個 網頁伺服器對於開發很方便,但是,千萬不要在正式的應用布署環境中使用它。 在同一時間,該伺服器只能可靠地處理一次單個請求,並且沒有進行任何類型的安全審計。
更改Development Server 的主機地址或連接埠。預設情況下,runserver命令在8000連接埠啟動程式開發伺服器,且僅監聽本地串連。 要想要更改伺服器連接埠的話,可將連接埠作為命令列參數傳入:
python manage.py runserver 8080
通過指定一個 IP 位址,你可以告訴伺服器–允許非本地串連訪問。 如果你想和其他開發人員共用同一開發網站的話,該功能特別有用。“0.0.0.0”這個IP地址,告訴伺服器去偵聽任意的網路介面。
python manage.py runserver 0.0.0.0:8000
完成這些設定後,你本網中的其它電腦就可以在瀏覽器中訪問你的 IP 位址了。比如:http://192.168.1.103:8000/ . (注意,你將需要校閱一下你的網路設定來決定你在本網中的IP 位址) Unix使用者可以在命令提示字元中輸入ifconfig來擷取以上資訊。使用Windows的使用者,請嘗試使用 ipconfig命令。
好了,利用Django進行Web開發的系列(一)就完成了,希望大家關注我後續的學習筆記,以便共同學習和討論。
7 參考內容
[1] The Django book
[Python] 利用Django進行Web開發系列(一)