Django是基於Python開發的免費的開源網站框架,也是python web開發中重量級的web框架,可以用於快速搭建高性能並且優雅的網站!
下面以Fedora為例安裝Django,最新Fedora 23集成了python 3.4.3,所以可以直接安裝django,同時建議不要使用自己編譯安裝的python來安裝django,這樣可能會出問題,因為很多東西要依賴於系統本身,自己編譯安裝的python只用來開發本地應用,而不是web開發;另外在Fedora中,輸入python會提示命令找不到,而輸入python3會進入python交互式界面,那是因為/usr/bin/下只有python3軟鏈接,鏈接到python3.4,而並沒有python這個鏈接,所以為了后來方便,我們可以建立一個軟鏈接python,不用每次都再輸python3了,命令如下:
ln -s /usr/bin/python3 /usr/bin/python
這樣就建立了一個軟鏈接,以后隨時輸入python即可了,好的,下面正式的開始安裝Django
安裝django之前,首先要安裝pip,pip是一種類似yum這樣的軟件安裝工具,用它可以很方便的安裝軟件,並且自動解決版本升級問題,實際上pip是專門安裝和管理python包的工具,是easy_install的替代品,所以要先安裝pip,pip的在python官網的鏈接是:https://pypi.python.org/pypi/pip/
進去上述網站之后,點擊Installation就可以進入安裝說明界面了,網址是:https://pip.pypa.io/en/latest/installing/
緊接着我們就看到,pip的安裝方法之一就是使用get-pip.py腳本來安裝,我們可以復制get-pip.py的鏈接,也可以先下載到本地計算機上然后上傳至服務器,可以看到get-pip.py的鏈接是:https://bootstrap.pypa.io/get-pip.py
執行下面命令下載該文件:
wget https://bootstrap.pypa.io/get-pip.py
下載完之后,根據官網說明,要使用本地的python運行該腳本:
python get-pip.py
稍等一下pip就安裝成功了,可以通過執行的pip命令查看對應的參數,下面使用pip來安裝django,django官網有詳細的教程:https://www.djangoproject.com/,根據說明知道,安裝django的命令是:pip install Django,這樣運行默認安裝的是最新版,目前是1.9.2,因為python版本的原因,所以會出現錯誤,安裝失敗,根據測試在python3.4基礎上安裝Django 1.8.9正式版是沒有問題的,所以要執行下面命令:
pip install Django==1.8.9
回車后稍等一會,需要下載相應的文件,等執行完畢,Django 1.8.9就安裝成功了,如果是CentOS 6.6或者更低版本,系統上帶的python版本是2.6.6,那么經過測試安裝Django 1.5.8是沒有任何問題的所以用pip應該是:pip install Django==1.5.8
等安裝完成之后,執行python進入交互式界面,輸入import django,然后再輸入django.VERSION回車后可以看到剛剛安裝的Django的版本號,或者直接執行下面命令:
python -c "import django; print(django.get_version())"
這同時也說明django安裝成功了
接下來可以開始創建web應用了,在我們的根目錄下隨便創建一個目錄,用來專門放置Django項目,在該目錄下執行下面命令:
django-admin.py startproject HelloDjango
這就是創建django項目的命令,使用pip安裝django后,在/usr/bin/下會生成django-admin.py新版本中也會生成django-admin可執行文件,所以也可以執行:django-admin startproject HelloDjango創建項目,創建后我們進入項目目錄:
cd HelloDjango/
進入目錄之后,可以通過tree命令查看目錄結構,如果提示沒有tree命令的話,可以使用yum -y install tree命令來安裝
我們可以看到初始目錄的文件了,項目目錄下manage.py是一個實用的命令行工具,可以通過它管理django服務器等,容器下還有一個和容器同名的HelloDjango目錄,__init__.py是項目初始化文件,告訴python該目錄是一個python包,settings.py是用來進行項目配置的文件,urls.py是項目中所有的url聲明,可以認為是django驅動整個項目的url目錄,可以定義多種優雅的路由請求,wsgi.py是一個WSGI兼容的Web服務器入口,方便運行web項目。現在這就是一個初始的項目,我們接下來啟動這個項目:
python manage.py runserver 192.168.1.41:80
因為要從局域網訪問所以后面我們自己定義的是服務器本身的ip和端口號,啟動之后命令行進入等待,訪問之前不要忘了關閉防火牆,對於centos可以使用如下命令關閉:
/etc/init.d/iptables stop
對於我現在使用的Fedora,關閉命令是:
/bin/systemctl stop firewalld.service
關閉防火牆之后,我們通過瀏覽器訪問http://192.168.1.41/即可以打開頁面,
看到這個頁面說明django運行一切正常了,瀏覽器每發出請求,服務器都會更新消息:
通過Ctrl+C快捷鍵可以終止服務器,接下來我們新建一個簡單的測試應用,可以在HelloDjango下直接建立視圖文件,但是為了應用結構的清晰不建議這樣做,正確方法是在容器根目錄下,使用如下命令可以建立一個應用,一個項目可以包括多個應用:
python manage.py startapp app1
這樣在容器下就會出現一個app1的目錄,結構如下:
每個源文件的含義也不難理解,下面使用vim打開views.py,如果沒有vim可以使用yum install vim進行安裝
打開后views.py是空的,有用的只有頭部一行代碼,是用於后來模板渲染的
現在我們直接補充如下代碼,打印一行簡單的輸出:
from django.http import HttpResponse def index(request): return HttpResponse("Hello Django!")
頭部包含了請求庫,每個方法都必須有request參數,這是用來接收請求的,HttpResponse方法的作用就是響應請求,然后保存視圖文件,進入項目下的HelloDjango目錄,編輯settings.py配置文件,找到INSTALLED_APPS配置項,追加一項app1,將應用app1添加到項目容器
保存之后,編輯urls.py文件,頭部追加一行from app1 import views as app1_views,這個app_views是我們自己定義的導入的視圖名,然后給urlpatterns這個列表添加一項:url(r'^$', app1_views.index), 注意后面要有一個逗號,前面是定義請求url的正則表達式,后面是響應輸出的視圖方法,這里正則表達式匹配為空,就是代表的根目錄,如下圖,帶有# new注釋的是新增的代碼:
現在保存,回到容器下再次運行:python manage.py runserver 192.168.1.41:80啟動開發服務器,用瀏覽器訪問即可
下面可以在之前的視圖中再定義一個方法,
def home(request): return render(request, 'home.html')
使用render方法之前要使用from django.shortcuts import render導入對應庫,因為前面默認導入了所以不用再次導入了,render方法的作用就是調用對應的視圖模板也就是home.html,那么home.html放到什么地方呢,在app1目錄下執行下面命令:
$ mkdir templates $ cd templates/ $ vim home.html
在django加載app1應用時,會自動讀取templates模板目錄從而渲染里面的數據,home.html就是一個網頁模板,為了簡單,沒有添加動態的數據:
1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset="utf-8"> 5 <title>home視圖</title> 6 </head> 7 <body> 8 <h3>Hello Django!</h3> 9 </body> 10 </html>
同樣添加urls.py的配置項,設置訪問url,代碼就是下圖列表中的第三項:
保存后,同樣啟動服務器,訪問http://192.168.1.41/home就可以看到對應的響應
以上就是Django基本的安裝和最簡單的例子,Django還有很多強大的功能,特別在國外,很多網站都是基於Django構建的,Django的特點就是功能強大並且使用簡單,適合快速開發