1. 程式人生 > >[Python] 利用Django進行Web開發

[Python] 利用Django進行Web開發

ons 條件 turn log har 包含 參數 ^c 檢測

第一步:下載並安裝django

首先,在Django官網上下載適合自己Python的Django版本,在安裝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 django
django.VERSION

  如果你看到django的版本信息,就說明安裝成功。

第二步:運行服務器。

首先,開始新建第一個項目。

  找到你的django-admin.py文件,並把它加入系統路徑。如果用的是setup.py工具安裝的Django,django-admin.py應該已被加入了系統路徑中。我的django-admin.py目錄為C:\Python27\Lib\site-packages\Django-1.11.5-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.11.5, 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 自帶的這個 web 服務器對於開發很方便,但是,千萬不要在正式的應用布署環境中使用它。 在同一時間,該服務器只能可靠地處理一次單個請求,並且沒有進行任何類型的安全審計。

  更改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命令。

第三步:創建視圖文件。

在編寫第一個頁面之前,我們首先要在mysite目錄下創建一個名稱為views.py的文件。當然,命名是沒有要求的,你也可以命名為a.py,b.py... ... 根據自己的喜好命名就行。在已創建好的views.py中寫入如下代碼,並保存:

from django.http import HttpResponse

def hello(request):
    return HttpResponse("Hello world! ")

  逐行分析一下這段代碼:

  首先,我們從django.http模塊導入HttpResponse類。

  接下來,我們定義一個叫做hello的視圖函數。每個視圖函數至少要有一個參數,通常被叫作request。這是一個觸發這個視圖、包含當前Web請求信息的對象,是類django.http.HttpResponse的一個實例。在這個示例中,我們雖然不用request做任何事情,然而它仍必須是這個視圖的第一個參數。註意視圖函數的名稱並不重要;並不一定非得以某種特定的方式命名才能讓Django識別它。 在這裏我們把它命名為:hello,是因為這個名稱清晰的顯示了視圖的用意。同樣地,你可以用諸如:hello_wonderful_beautiful_world,這樣難看的短句來給它命名。

  這個函數只有簡單的一行代碼: 它僅僅返回一個HttpResponse對象,這個對象包含了文本“Hello world”。

  在這裏要記住的是:一個視圖就是Python的一個函數。這個函數第一個參數的類型是HttpRequest;它返回一個HttpResponse實例。為了使一個Python的函數成為一個Django可識別的視圖,它必須滿足這兩個條件。

第四步:進行URL配置。

現在,如果你再運行:python manage.py runserver,你還將看到Django的歡迎頁面,而看不到我們剛才寫的Hello world顯示頁面。 那是因為我們的mysite項目還對hello視圖一無所知。我們需要通過一個詳細描述的URL來顯式的告訴它並且激活這個視圖。為了綁定視圖函數和URL,我們使用URLconf,即urls.py文件。 

  URLconf 就像是 Django 所支撐網站的目錄。 它的本質是 URL 模式以及要為該 URL 模式調用的視圖函數之間的映射表。 你就是以這種方式告訴 Django,對於這個 URL 調用這段代碼,對於那個 URL 調用那段代碼。 例如,當用戶訪問/foo/時,調用視圖函數foo_view(),這個視圖函數存在於Python模塊文件view.py中。

  如果想在URLconf中加入URL和view,只需增加映射URL模式和view功能的Python tuple即可. 這裏演示如何添加view中hello功能。

技術分享
from django.conf.urls import url
from django.contrib import admin from mysite.views import hello urlpatterns = [
url(r‘^admin/‘, admin.site.urls), url(
r^hello/, hello),
]
技術分享

  我們逐行分析一下這段代碼:

  首先,我們從模塊中引入了hello視圖。

  接下來,我們為urlpatterns加上一行:url (‘^hello/$’, hello), 這行被稱作URLpattern,它是一個Python的元組。元組中第一個元素是模式匹配字符串(正則表達式);第二個元素是那個模式將使用的視圖函數。   urlpattern中包含了一個尖號(^)和一個美元符號($)。這些都是正則表達式符號,並且有特定的含義: 上箭頭要求表達式對字符串的頭部進行匹配,美元符號則要求表達式對字符串的尾部進行匹配。   簡單來說,這段代碼只是告訴Django,所有指向URL:/hello/的請求都應由hello這個視圖函數來處理。 第五步:驗證。 啟動Django開發服務器來測試修改好的 URLconf, 運行命令行python manage.py runserver。開發服務器的地址是http://127.0.0.1:8000/ ,打開你的瀏覽器訪問 http://127.0.0.1:8000/hello/ 。 你就可以看到輸出結果了。開發服務器將自動檢測Python代碼的更改來做必要的重新加載, 所以你不需要重啟Server在代碼更改之後。服務器運行地址”http://127.0.0.1:8000/“,所以打開瀏覽器直接輸入“http://127.0.0.1:8000/hello/”,你將看到由你的Django視圖輸出頁面如下所示: 技術分享

  總結一下:

  1. 進來的請求轉入/hello/。

  1. Django通過在ROOT_URLCONF配置來決定根URLconf。

  1. Django在URLconf中的所有URL模式中,查找第一個匹配/hello/的條目。

  1. 如果找到匹配,將調用相應的視圖函數。

  1. 視圖函數返回一個HttpResponse。

  1. Django轉換HttpResponse為一個適合的HTTP response,以Web page顯示出來。

  其實做一個Django-powered頁面,只需要寫視圖函數並用 URLconfs把它們和URLs對應起來就ok了。

第六步:編寫一個動態頁面。

我們的Hello world視圖是用來演示基本的Django是如何工作的,但是它不是一個動態網頁的例子,因為網頁的內容一直是一樣的. 每次去查看/hello/,你將會看到相同的內容,它類似一個靜態HTML文件。在第二個例子裏,博主通過一個顯示當前時間的頁面來簡單示範一下動態頁面。動態頁面和靜態頁面的編寫是一樣的,兩部分:創建視圖和配置URL。

  視圖文件views.py代碼如下:

from django.http import HttpResponse
import time

def current_time(request):
    return HttpResponse("Current time is: "+time.strftime(%Y-%m-%d %H:%M:%S‘))

  URLconf文件urls.py代碼如下:

技術分享
from django.conf.urls import url
from django.contrib import admin
from mysite.views import hello
from mysite.views import current_time urlpatterns = [
url(r‘^admin/‘, admin.site.urls),
url(r‘^hello/‘,hello), url(r
^current_time/‘, current_time),
]
技術分享

  然後我們通過網址http://127.0.0.1:8000/current_time/就可以看到編寫的第一個動態頁面了,它顯示的內容是你訪問該頁面時的當前時間,如下圖所示:

技術分享

[Python] 利用Django進行Web開發