回覆列表
  • 1 # zfazf32109

    一.下載Django如果電腦沒安裝 python,點選這裡。然後從這裡下載 Django 穩定版本。或者執行命令下載 Django 最新版本:git clone https://github.com/django/django.git這裡我用的是 Mac 自帶的python2.7,下載是最新版本的Django後發現python2.7版本需要升級,但是注意,對 iOS 開發者來說,最好不要升級python2.7到python3,因為Xcode只支援最穩定版的python2.7指令碼。所以這裡我下載的Django版本是1.6.1。二.安裝Djangocd Django sudo python setup.py. installPython 預設在/Library/Python/2.7中,那麼無論如何你在哪裡安裝完DJango,都會在/Library/Python/2.7/site-packages中生成一個django的資料夾。如果要刪除django,只需要把該目錄下的django資料夾刪除即可。三.測試LocalHost是否成功sudo mkdir ~/Djangodemo/*建立一個用於測試Localhost的網站樣例*/sudo django-admin.py startproject testLocalHostcd testLocalHostpython manage.py runserver瀏覽器開啟http://localhost:8000,成功的話你將會看到Django的簡單的成功頁面說明:django-admin.py在我們安裝完Django之後除了在site-packages中生成django資料夾之外(裡面都是一些DJango命令的一些檔案和程式碼),在/usr/local/bin/中也生成了一個名為django-admin.py的連結,這樣無論你在何種路徑下都可以直接呼叫django-admin.py檔案了。在Win下我們稱這個過程為:加入到環境變數。四.檔案結構1.建立 mysite 工程刪除原來的 LocalHost 工程,建立 mysite 工程,執行命令:$ mkdir mysite$ django-admin.py startporject mysite此時的目錄結構如下:mysite/mysite/__init__.pysettings.pyurls.pymanage.py2.manage.py作用:把該工程的包加入了 sys.path ;以後你可以直接在你的程式碼中引用該工程中其他的包。載入 DJANGO_SETTINGS_MODULE ,指明該工程的配置檔案是 mysite/settings.py。最主要的是它包裹了 django-admin.py 的一些函式,讓你可以透過它來操作整個工程。3.__init__.py嚴格意義上講__init__.py不屬於 DJango 的範疇,而是 Python 語言的一種習慣,經常為空檔案。主要是告訴工程這是一個包(Package),防止不經意間因為包名為諸如String之類的字串而引起的混亂,當然你也可以在裡面加一些初始化的函式,但不在我們的討論之列。4.settings.py此前我們提到了manage.py的第二件工作便是指定了它是工程的配置檔案,那它配置了些什麼呢?程式碼量在其他幾個檔案中屬於比較多的,有一百行的樣子,主要設定了關於資料庫,後臺管理等配置,等到我們要用的時候再詳細說明。5.urls.py它負責把客戶的請求翻譯成函式呼叫。是重要要掌握的檔案。DJango 透過 settings.py 中指定的 URLconf 引數找到對應的 urls.py 檔案,此例中正好為我們的這個檔案。DJango 在 urls.py 中找到 urlpatterns 變數。DJango 收到一個客戶地址請求,我們不妨設為 localhost。DJango 在 urlpatterns 中順序遍歷正則式,找到第一個匹配,呼叫該正則式對應的函式。該函式返回客戶端所請求的內容。對開發者來說,真正需要關心的是如何完成正則表示式和對應函式的對應。 如下面例子:123urlpatterns=patterns("",url(r"^$","hello.views.home"),)說明:其中url裡面左半部分是正則式,右半部分是函式呼叫。r說明是raw匹配,表明正則表示式要求每個字元都必須被匹配,是一個可選項,如果不能理解可以省略。^表示匹配開始,$表示匹配結束。所以這個正則表示式匹配了空字元,正好符合地址為localhost的客戶請求(DJango收到的請求會自動省略域名,即localhost,即真正的請求字串為空)。右側表明腰呼叫名為hello的app的views.py檔案的home函式。6.增加 hello app剛才我們在url匹配的時候呼叫了home函式,此時我們就開始建立它:python manage.py startapp hello這樣我們在manage.py同級目錄下生成了hello目錄,進入hello目錄其他檔案都不用管,也不需要理解,直接開啟views.py編輯成如下樣子:from django.http import HttpResponsedef home(request):return HttpResponse("Hello World")啟動伺服器。其實hello相當於是一個app應用被新增進了mysite工程,當特定的請求到來時透過url匹配呼叫相應app下的views.py中的函式來達到不同的顯示效果。五.Django-URL解析和匹配1.patterns() 函式patterns 函式的的原型:patterns(prefix, pattern_description, ...)其中prefix表示函式呼叫的字首,而pattern_description則是一系列的元組。舉例說明prefix的作用:urlpatterns = patterns("hello.views",url(r"^$", "home"),)上例和上例的執行效果一樣,都表明了hello app下的views檔案裡的home函式。注意:字首末尾不必包含“.”;另外因為python函式規定引數不能多於 255 個,因此如果你的對映關係很多,可以利用諸如:urlpatterns += patterns(…)這種形式累加。2.url()函式url 函式的原型:1url(regex,view,kwargs=None,name=None,prefix="")其中後三項是可選項,在我們的例子中:regex=”r’^$"”;view=”hello.views.home”;name項給該url命名,這在未來透過name反向確定url有很大的作用;kwargs則傳遞額外的引數;prefix和此前的prefix作用一致,不過只適用這一條url。3.透過url傳遞資訊DJango 在透過url傳遞引數時有兩種方式,一種透過位置,一種透過關鍵詞。我們先看第一種,改此前的對映關係如下:1url(r"^(\d{4})/(\d{2})$","hello.views.home"),修改hello/views.py,增加兩行程式碼如下:def home(request, year="0000", month="00"):return HttpResponse("Hello World "+year+" "+month)這樣當用戶請求locahost:8000/2015/5時候,相當於在呼叫home(request, ‘2015’, ’5’),注意此時year和month的相對關係,因為引數傳遞是基於位置資訊的,第一個是4個數字是年,第二個2個數字是月。下面是第二種,即關鍵詞方式,我們修改兩個檔案如下:#mysite/urls.pyurl(r"^(?P\d{4})/(?P\d{2})$", "hello.views.home"),#hello/views.py#注意year和month的位置def home(request, month="00", year="0000"):return HttpResponse("Hello World "+year+" "+month)

  • 中秋節和大豐收的關聯?
  • 英雄聯盟傑斯這個英雄怎麼樣?