由于現代Web開發環境由多個部件組成,安裝Django需要幾個步驟。 這一章,我們將演示如何安裝框架以及一些依賴關系。
因為Django就是純Python代碼,它可以運行在任何Python可以運行的環境,甚至是手機上! 但是這章只提及Django安裝的通用腳本。 我們假設你把它安裝在桌面/筆記本電腦或服務器。
往后,在第12章,我們將討論如何部署Django到一個生產站點。
Django本身是純Python編寫的,所以安裝框架的第一步是確保你已經安裝了Python。
核心Django框架可以工作在2.3至2.6(包括2.3和2.6)之間的任何Python版本。 Django的可選GIS(地理信息系統)支持需要Python 2.4到2.6。
如果你不確定要安裝Python的什么版本,并且你完全拿不定主意的話,那就選2.x系列的最新版本吧。 版本2.6。 雖然Django在2.3至2.6版之間的任意Python版本下都一樣運行得很好,但是新版本的Python提供了一些你可能比較想應用在你的程序里的,更加豐富和額外的語言特性。 另外,某些你可能要用到的Django第三方插件會要求比Python 2.3更新的版本,所以使用比較新的Python版本會讓你有更多選擇。
Django和 Python 3.0
在寫作本書的時候,Python3.0已經發布,但Django暫時還不支持。 Python3.0這個語言本身引入了大量不向后兼容的改變,因此,我們預期大多數主要的Python庫和框架將花幾年才能銜接,包括Django。
如果你是個Python新手并且正迷茫于到底是學習Python 2.x還是Python 3.x的話,我們建議你選擇Python 2.x。
如果使用的是 Linux 或 Mac OS X ,系統可能已經預裝了 Python 。在命令提示符下 (或 OS X 的終端中) 輸入python ,如果看到如下信息,說明 Python 已經裝好了: 在命令行窗口中輸入python (或是在OS X的程序/工具/終端中)。 如果你看到這樣的信息,說明 python 已經安裝好了.
Python 2.4.1 (#2, Mar 31 2005, 00:05:10)
[GCC 3.3 20030304 (Apple Computer, Inc. build 1666)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>>
否則, 你需要下載并安裝Python. 它既快速又方便,而詳細說明可參考http://www.python.org/download/
任何時候,都有兩個不同版本的Django供您選擇。 最新的官方發行版和有風險的主干版本。 安裝的版本取決于您的優先選擇。 你需要一個穩定的通過測試的Django,或是你想要包括最新功能的版本,也許你可對Django本身作貢獻,而把穩定作為代價?
我們推薦選定一個正式發布版本,但重要的是了解到主干開發版本的存在,因為在文檔和社區成員中你會發現它被提到。
官方發布的版本帶有一個版本號,例如1.0.3或1.1,而最新版本總是可以在http://www.djangoproject.com/download/找到。
如果您在用Linux系統,其中包括Django的包,使用默認的版本是個好主意。 這樣,你將會通過系統的包管理得到安全的升級。
如果你的系統沒有自帶Django,你可以自己下載然后安裝框架。 首先,下載名字類似于Django-1.0.2-final.tar.gz壓縮文件。(下載到哪里無所謂,安裝程序會把Django文件放到正確的地方。)解壓縮之后運行setup.py install,像操作大多數Python庫一樣。
以下是如何在Unix系統上安裝的方法:
Windows系統上,推薦使用7-Zip(http://www.djangoproject.com/r/7zip/)來解壓縮.tar.gz文件。 解壓縮完成后,以管理員權限啟動一個DOS Shell(命令提示符),然后在名字以Django-開始的目錄里執行如下命令:
python setup.py install
如果你很好奇: Django將被安裝到你的Python安裝目錄的site-package
目錄(Python從該目錄尋找第三方庫)。 通常情況下,這個目錄在/usr/lib/python2.4/site-packages。
最新最好的django的開發版本稱為trunk,可以從django的subversion處獲得。 如果你想嘗鮮,或者想為django貢獻代碼,那么你應當安裝這個版本。
Subversion 是一種與 CVS 類似的免費開源版本控制系統,Django 開發團隊使用它管理 Django 代碼庫的更新。 你可以使用 Subversion 客戶端獲取最新的 Django 源代碼,并可任何時候使用 local checkout 更新本地 Django 代碼的版本,以獲取 Django 開發者所做的最近更新和改進。
請記住,即使是使用trunk版本,也是有保障的。 因為很多django的開發者在正式網站上就是用的trunk版本,他們會保證trunk版本的穩定性。
遵循以下步驟以獲取最新的 Django 主流代碼:
確保安裝了 Subversion 客戶端。 可以從 http://subversion.tigris.org/ 免費下載該軟件,并從http://svnbook.red-bean.com/ 獲取出色的文檔。
(如果你在使用Mac OS X 10.5或者更新的版本,你很走運,Subversion應該就可以安裝Django。 你可以在終端上輸入svn --version來驗證。
使用 svn co http://code.djangoproject.com/svn/django/trunk djtrunk 命令查看主體代碼。
找到你的python的site-packages目錄。 一般為/usr/lib/python2.4/site-packages,如果你不確定,可以輸入如下命令:
python -c 'import sys, pprint; pprint.pprint(sys.path)'
上面的結果會包含site-packages的目錄
在site-packages目錄下,創建一個文件django.pth,編輯這個文件,包含djtrunk目錄的全路徑 利潤,此文件包含如下行:
/home/me/code/djtrunk
提示:
如果之前沒有接觸過 .pth 文件,你可以從 http://www.djangoproject.com/r/python/site-module/ 中獲取更多相關知識。
從 Subversion 完成下載并執行了前述步驟后,就沒有必要再執行 python setup.py install
了,你剛才已經手動完成了安裝!
由于 Django 主干代碼的更新經常包括 bug 修正和特性添加,如果真的著迷的話,你可能每隔一小段時間就想更新一次。 在 djtrunk 目錄下運行 svn update 命令即可進行更新。 當你使用這個命令時,Subversion 會聯絡http://code.djangoproject.com ,判斷代碼是否有更新,然后把上次更新以來的所有變動應用到本地代碼。 就這么簡單。
最后,如果你使用trunk,你要知道使用的是哪個trunk版本。 如果你去社區尋求幫助,或是為Django框架提供改進,知道你使用的版本號是非常重要的。 因此,當你到社區去求助,或者為 django 提供改進意見的時候,請時刻記住說明你正在使用的 django 的版本號。 如何知道你正在使用的 django 的版本號呢?進入djtrunk
目錄,然后鍵入 svn info ,在輸出信息中查看 Revision: (版本:) 后跟的數字。 Django在每次更新后,版本號都是遞增的,無論是修復Bug、增加特性、改進文檔或者是其他。 在一些Django社區中,版本號甚至成為了一種榮譽的象征,我從[寫上非常低的版本號]開始就已經使用Djano了。
讓我們花點時間去測試 Django 是否安裝成功,并工作良好。同時也可以了解到一些明確的安裝后的反饋信息。 在Shell中,更換到另外一個目錄(不是包含Django的目錄),然后輸入python來打開Python的交互解釋器。如果安裝成功,你應該可以導入django模塊了:
>>> import django
>>> django.VERSION
(1, 1, 0, final', 1)
交互解釋器示例
Python 交互解釋器是命令行窗口的程序,通過它可以交互式地編寫 Python 程序。 要啟動它只需運行 python命令。
我們在交互解釋器中演示Python示例將貫穿整本書。 你可以用三個大于號 (>>> )來分辨出示例,三個大于號就表示交互提示符。 如果你要從本書中拷貝示例,請不要拷貝提示符。
在交互式解釋器中,多行聲明用三個點 (...)來填補。 例如:
>>> print """This is a
... string that spans
... three lines."""
This is a
string that spans
three lines.
>>> def my_function(value):
... print value
>>> my_function('hello')
hello
這三個在新行開始插入的點,是Python Shell自行加入的,不屬于我們的輸入。 但是包含它們是為了追求解釋器的正確輸出。 如果你拷貝我們的示例去運行,千萬別拷貝這些點。
這會兒,你可以使用django寫web應用了,因為django只要求python正確安裝后就可以跑起來了。 不過,當你想開發一個_數據庫驅動_的web站點時,你應當需要配置一個數據庫服務器。
如果你只想玩一下,可以不配置數據庫,直接跳到 開始一個project 部分去,不過你要注意本書的例子都是假設你配置好了一個正常工作的數據庫。
Django支持四種數據庫:
大部分情況下,這四種數據庫都會和Django框架很好的工作。 (一個值得注意的例外是Django的可選GIS支持,它為PostgreSQL提供了強大的功能。)如果你不準備使用一些老舊系統,而且可以自由的選擇數據庫后端,我們推薦你使用PostgreSQL,它在成本、特性、速度和穩定性方面都做的比較平衡。
設置數據庫只需要兩步:
如果你只是玩一下,不想安裝數據庫服務,那么可以考慮使用SQLite。 如果你用python2.5或更高版本的話,SQLite是唯一一個被支持的且不需要以上安裝步驟的數據庫。 它僅對你的文件系統中的單一文件讀寫數據,并且Python2.5和以后版本內建了對它的支持。
在Windows上,取得數據庫驅動程序可能會令人沮喪。 如果你急著用它,我們建議你使用python2.5。
使用 PostgreSQL 的話,你需要從 http://www.djangoproject.com/r/python-pgsql/ 下載 psycopg 這個開發包。 我們建議使用psycopg2,因為它是新的,開發比較積極,且更容易安裝。 留意你所用的是 版本 1 還是 2,稍后你會需要這項信息。
如果在 Windows 平臺上使用 PostgreSQL,可以從 http://www.djangoproject.com/r/python-pgsql/windows/ 獲取預編譯的 psycopg 開發包的二進制文件。
如果你在用Linux,檢查你的發行版的軟件包管理系統是否提供了一套叫做python-psycopg2,psycopg2-python,python-postgresql這類名字的包。
如果你正在使用Python 2.5版本或者更高,那么你很幸運: 不要求安裝特定的數據庫,因為Python支持和SQLite進行通信。 向前跳到下一節。
如果你用的是Python2.4或更早的版本,你需要 SQLite 3_而不是_版本2,這個可從http://www.djangoproject.com/r/sqlite/pysqlitehttp://www.djangoproject.com/r/python-sqlite/ 確認一下你的pysqlite版本是2.0.3或者更高。
在 Windows 平臺上,可以跳過單獨的 SQLite 二進制包安裝工作,因為它們已被靜態鏈接到 pysqlite 二進制開發包中。
如果你在用Linux,檢查你的發行版的軟件包管理系統是否提供了一套叫做python-sqlite3,sqlite-python,pysqlite這類名字的包。
django要求MySQL4.0或更高的版本。 3.X 版本不支持嵌套子查詢和一些其它相當標準的SQL語句。
你還需要從 http://www.djangoproject.com/r/python-mysql/ 下載安裝 MySQLdb 。
如果你正在使用Linux,檢查下你系統的包管理器是否提供了叫做python-mysql,python-mysqldb,myspl-python或者相似的包。
django需要Oracle9i或更高版本。
如果你用Oracle,你需要安裝cx_Oracle庫,可以從http://cx-oracle.sourceforge.net/獲得。 要用4.3.1或更高版本,但要避開5.0,這是因為這個版本的驅動有bug。
正如之前提及過的,Django 并不是非得要數據庫才可以運行。 如果只用它提供一些不涉及數據庫的動態頁面服務,也同樣可以完美運行。
盡管如此,還是要記住:
Django 所捆綁的一些附加工具 一定 需要數據庫,因此如果選擇不使用數據庫,你將不能使用那些功能。 (我們將在本書中自始至終強調這些功能)
一但你安裝好了python,django和(可選的)數據庫及相關庫,你就可以通過創建一個project,邁出開發django應用的第一步。
項目 是 Django 實例的一系列設置的集合,它包括數據庫配置、Django 特定選項以及應用程序的特定設置。
如果第一次使用 Django,必須進行一些初始化設置工作。 新建一個工作目錄,例如 /home/username/djcode/,然后進入該目錄。
這個目錄應該放哪兒?
有過 PHP 編程背景的話,你可能習慣于將代碼都放在 Web 服務器的文檔根目錄 (例如 /var/www 這樣的地方)。 而在 Django 中,把任何Python代碼和web server的文檔根(root)放在一起并不是一個好主意。因為這樣做有使人能通過網路看到你原代碼的風險. 那就太糟了。
把代碼放置在文檔根目錄 之外 的某些目錄中。
轉到你創建的目錄,運行命令django-admin.py startproject mysite。這樣會在你的當前目錄下創建一個目錄。mysite
注意
如果用的是 setup.py 工具安裝的 Django , django-admin.py 應該已被加入了系統路徑中。
如果你使用一個trunk版本,你會在 djtrunk/django/bin 下發現 django-admin.py 。你將來會常用到django-admin.py,考慮把它加到你的系統路徑中去比較好。 在Unix中, 你也可以用來自/usr/local/bin 的符號連接, 用一個命令, 諸如sudo ln -s /path/to/django/bin/django-admin.py /usr/local/bin/django-admin.py . 在Windows中, 你需要修改你的 PATH 環境變量.
如果你的django是從linux發行版中安裝的,那么,常會被django-admin.py替代。django-admin
如果在運行時,你看到權限拒絕的提示,你應當修改這個文件的權限。django-admin.py startproject
為此, 鍵入 cd /usr/local/bin轉到django-admin.py所在的目錄,運行命令chmod +x django-admin.py
startproject 命令創建一個目錄,包含4個文件:
mysite/
__init__.py
manage.py
settings.py
urls.py
文件如下:
盡管這些的文件很小,但這些文件已經構成了一個可運行的Django應用。
為了安裝后更多的體驗,讓我們運行一下django開發服務器看看我們的準系統。
django開發服務是可用在開發期間的,一個內建的,輕量的web服務。 我們提供這個服務器是為了讓你快速開發站點,也就是說在準備發布產品之前,無需進行產品級 Web 服務器(比如 Apache)的配置工作。 開發服務器監測你的代碼并自動加載它,這樣你會很容易修改代碼而不用重啟動服務。
如果你還沒啟動服務器的話,請切換到你的項目目錄里 (cd mysite ),運行下面的命令:
python manage.py runserver
你會看到些像這樣的
Validating models...
0 errors found.
Django version 1.0, using settings 'mysite.settings'
Development server is running at http://127.0.0.1:8000/
Quit the server with CONTROL-C.
這將會在端口8000啟動一個本地服務器, 并且只能從你的這臺電腦連接和訪問。 既然服務器已經運行起來了,現在用網頁瀏覽器訪問 http://127.0.0.1:8000/ 。 你應該可以看到一個令人賞心悅目的淡藍色Django歡迎頁面。 它開始工作了。
在進一步學習之前, 一個重要的,關于開發網絡服務器的提示很值得一說。 雖然 django 自帶的這個 web 服務器對于開發很方便,但是,千萬不要在正式的應用布署環境中使用它。 在同一時間,該服務器只能可靠地處理一次單個請求,并且沒有進行任何類型的安全審計。 發布站點前,請參閱第 20 章了解如何部署 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 命令。
好了,你已經安裝好所需的一切, 并且開發服務器也運行起來了,你已經準備好繼續 學習基礎知識–視圖和URL配置 這一章的內容了。