Python Tutorial 第四堂(1)Django 起步走
Python Tutorial 第三堂(3)永續化機制 << 前續 這堂課開始,我們要來看看如何使用 Python 來撰寫 Web 應用程式,使用的框架(Framework)是 Django。什麼是框架?它跟程式庫(Library)有何不同? 程式庫 vs 框架從課程一開始,你就一直在使用程式庫,你的程式流程一直在你的控制之內,你決定了程式何時要使用程式庫來詢問使用者問題、何時要讀取使用者回應、何時要處理結果 … 就像是以下的程式中,你決定在流程中使用程式庫中的 name = raw_input('What is your name?') process_name(name) quest = raw_input('What is your quest?') process_quest(quest) 當你開始使用框架,你會發現不是你決定程式流程,你會定義函式,由框架決定何時來呼叫你定義的函式。流程的控制權被反轉了,現在是框架在定義流程,在既定的流程中框架會呼叫你的函式,而不是你來呼叫框架。例如,你會使用 GUI 框架 Tkinter 來組合這樣的視窗 … 你需要依框架的要求進行畫面組合,並安排好等待被呼叫的一些自定義函式,像是 import Tkinter top = Tkinter.Tk() Tkinter.Label(top, text='What is Your Name?').pack() name_var = Tkinter.StringVar() name_entry = Tkinter.Entry(top, textvariable=name_var) name_entry.pack() name_entry.bind('', lambda event: process_name(name_var)) Tkinter.Label(top, text='What is Your Quest?').pack() quest_var = Tkinter.StringVar() quest_entry = Tkinter.Entry(top, textvariable=quest_var) quest_entry.pack() quest_entry.bind('', lambda event: process_name(quest_var)) Tkinter.mainloop() 當使用者作出動作,框架會有既定的處理流程,並在對應的時機點呼叫你定義的函式。 IoC(Inversion of Control)在談到框架時,經常會聽到 IoC 這個縮寫名稱,也就是 Inversion of Control,既控制權反轉,什麼控制權被反轉了?誰能決定程式的流程! 使用程式庫的話,流程的控制是這樣的 …
藍色部份是你可以自行掌控的部份,你決定程式流程走向,並在過程中必要時機,引用各種程式庫! 使用框架的話,流程的控制是這樣的 … 藍色部份是你可以自行掌控的部份,也就是框架規範下可進行的元件實作,框架在本身定義的流程下適當時機,會呼叫你的元件實作。 我們需要使用框架嗎?應用程式開發時是否需要使用框架,有很多考量點 … 然而簡單來說 … 使用程式庫時,開發者會擁有較高的自由度;使用框架時,開發者會受到較大的限制。 限制?有哪些限制?很多 … 是否需要使用框架?是否要遵循框架規範的流程?使用框架是基於技術考量?還是基於商業上的考量?(嗯 … 因為這框架是採購案中被綁在一起的 … 上頭叫我們要用我們就得用?)… 這幾個問題都是必須想想看的 … 股市有句名言,好的老師帶你上天堂,不好的老師帶你住套房。用框架時可以這麼想 … 好的框架帶你上天堂,不好的框架讓你下地獄 … XD Django 起步走這堂課會使用 Django 這個框架來進行 Web 應用程式的練習,在 Python 的世界中,如果你願意遵守且認同 Django 定義的流程、語義等,那你就會覺得這是個高階、快速開發、簡潔的 Web 框架。在官方網站上列出了一些特性:
來看一下官方網站上幾個範例片段 … 像是永續化時的模型(Model)設計 …
這是 URL 設計時的方式,使用正則表示式來設計 URL …
畫面(View)設計與樣版系統 …
以下透過練習直接來準備一下 Django 專案 … 練習 9:建立 Django 專案 在實際進行這門課程時,使用的 Django 版本是 1.5.1,因而這邊仍固定使用這個版本來示範 … 這邊會建立一個虛擬環境,並透過 pip 來安裝 Django,指令如下: ~/scripts$ virtualenv --distribute venv ~/scripts$ cd venv ~/scripts/venv$ source bin/activate ~/scripts/venv$ pip install Django==1.5.1 ~/scripts/venv$ python -c 'import django; print django.get_version()' ~/scripts/venv$ django-admin.py startproject mysite ~/scripts/venv$ ls -al mysite ~/scripts/venv$ cd mysite ~/scripts/venv$ python manage.py runserver 指令中透過 開啟你的瀏覽器,瀏覽 http://127.0.0.1:8000/,你應該要看到以下畫面 … 這個專案中還有什麼呢?後面我們還會繼探討 … |