完整的Django入門指南學習筆記1
轉自【https://blog.csdn.net/qq_35554125/article/details/79462885】
part 1:
前沿
教程材料一共會被分為七個部分。 此教程將從安裝、開發環境的準備,模型,檢視,模板,URL到更高階的主題(如遷移,測試和部署)中詳細探討所有基本概念。
安裝
公眾號裡邊的是Mac下的教程,我的系統是win,這也是為啥我做這個筆記的原因之一。基本的設定包括安裝Python,Virtualenv和Django。
使用虛擬環境,可以讓開發的每個專案都會有其獨立的環境。這樣的話,包之間的依賴關係不會發生衝突。同時也使得我們能在不同Django版本上執行的本地機器的專案。安裝python2和3的話可以參考百度,百度是個好東西,在這裡不做贅述。
安裝Virtualenv
通過pip3(因為我安裝了python2和3,所以把python3的pip改成pip3,為了避免使用衝突)來安裝Virtualenv。在cmd中,執行:
pip3 install virtualenv
到目前為止,我們執行的安裝都是在作業系統環境下執行的。從現在開始,我們安裝的所有東西,包括django本身,都將安裝在虛擬環境中。
可以這樣理解:對於你開始的每個Django專案,你首先會為它建立一個虛擬環境。這就像每個Django專案都有一個沙盒。所以你隨意執行,安裝軟體包,解除安裝軟體包而不會破壞任何東西。
接著我們建立一個名為Development的資料夾。然後用它來組織我所有的專案和網站。接著在其中建立一個專案名稱為myproject的資料夾。
這個資料夾是級別較高的目錄,將儲存與我們的Django專案相關的所有檔案和東西,包括它的虛擬環境。
開始建立第一個虛擬環境(參考http://www.jb51.net/article/85527.htm 使用Virtualenv來建立虛擬環境)並安裝django。
在myproject資料夾中執行:
virtualenv venv
這樣虛擬環境就建立好了。接著我們啟用環境,執行:
venv\Scripts\activate
如果看到命令列前面有(venv),就代表啟用成功,如下圖。
在myproject資料夾中,我們通過上述步驟建立了一個名為venv的特殊資料夾。該資料夾內包含了一個python的副本。在我們激活了venv環境之後,當我們執行python命令時,它將使用我們儲存在venv裡面的本地副本,而不是我們之前在作業系統中安裝的那個。
另外一個要強調的是,pip程式也已經安裝好了。當我們使用它來安裝Python的軟體包(比如Django)時,它將被安裝在venv環境中。
請注意,當我們啟用venv時,我們將使用命令python(而不是python3)來呼叫Python 3.6.2,並且僅使用pip(而不是pip3)來安裝軟體包。
順便說一句,要想退出venv環境,執行下面的命令:
deactivate
但是我們現在需要保持啟用狀態來進行下一步!
安裝Django 1.11.7
在啟動了venv的前提下,執行一下命令安裝django:
pip install django==1.11.7
如果使用pip install安裝庫比較慢,可以用豆瓣的映象:
pip install django==1.11.7 -i http://pypi.douban.com/simple --trusted-host pypi.douban.com
現在一切準備就緒!
建立第一個專案
啟動一個新專案,執行下面的命令來建立一個新的 Django 專案:
django-admin startproject myproject
命令列工具django-admin會在安裝Django的時候一起自動安裝好。執行了上面的命令以後,系統會為Django專案生成基礎資料夾結構。現在,我們的myproject目錄結構如下所示:
myproject/ |- - myproject/ | |- - myproject/ | | |- - \_\_init\_\_.py | | |- - settings.py | | |- - urls.py | | |- - wsgi.py | +- - manage.py +- - venv/
我們最初的專案結構由五個檔案組成:
- manage.py:使用django-admin命令列工具的快捷方式。它用於執行與我們專案相關的管理命令。我們將使用它來執行開發伺服器,執行測試,建立遷移等等。
- __init__.py:這個空檔案告訴python這個資料夾是一個python包。
- settings.py:這個檔案包含了所有的專案配置。將來我們會一直提到這個檔案!
- urls.py:這個檔案負責對映我們專案中的路由和路徑。例如,如果你想在訪問URL / about/ 時顯示某些內容,則必須先在這裡做對映關係。
- wsgi.py:該檔案是用於部署的簡單閘道器介面。你可以暫且先不用關心她的內容,就先讓他在那裡就好了。
django自帶了一個簡單的網路伺服器。在開發過程中非常方便,所以我們無需安裝任何其他軟體即可在本地執行專案。我們可以通過執行命令來測試一下它:
python manage.py runserver
現在,你可以忽略終端中出現的遷移錯誤;我們將在稍後討論。
現在在Web瀏覽器中開啟URL:http://127.0.0.1:8000,你應該看到(類似)下面的頁面:
使用組合鍵 Control + C來終止開發伺服器。
Django 應用
在Django的哲學中,我們有兩個重要的概念:
- app:是一個可以做完成某件事情的Web應用程式。一個應用程式通常由一組models(資料庫表),views(檢視),templates(模板),tests(測試) 組成。
- project:是配置和應用程式的集合。一個專案可以由多個應用程式或一個應用程式組成。
請注意,如果沒有一個project,你就無法執行Django應用程式。像部落格這樣的簡單網站可以完全在單個應用程式中編寫,例如可以將其命名為blog或weblog。
這是組織原始碼的一種方式。現在剛開始,判斷什麼是或不是應用程式這些還不太重要。包括如何組織程式碼等。現在不用擔心那些問題!首先讓我們對Django的API和基礎知識進行梳理一遍。
好的!那麼,為了方便說明,我們來建立一個簡單的網路論壇或討論區。要建立我們的第一個應用程式,請跳轉到manage.py檔案所在的目錄並執行以下命令:
django-admin startapp boards
注意!我們這次使用的命令是startapp。 通過這條指令,系統會給我們建立以下目錄結構:
myproject/ |- - myproject/ | |- - boards/ | | |- - migrations/ | | | +- - \_\_init\_\_.py | | |- - \_\_init\_\_.py | | |- - admin.py | | |- - apps.py | | |- - models.py | | |- - tests.py | | +- - views.py | |- - myproject/ | | |- - \_\_init\_\_.py | | |- - settings.py | | |- - urls.py | | |- - wsgi.py | +- - manage.py +- - venv/
下面,我們來探討每個檔案的作用:
- migrations:在這個資料夾裡,Django會儲存一些檔案以跟蹤你在models.py檔案中建立的變更,用來保持資料庫和models.py的同步。
- admin.py:這個檔案為一個django內建的應用程式Django Admin的配置檔案。
- apps.py:這是應用程式本身的配置檔案。
- models.py:這裡是我們定義Web應用程式資料例項的地方。models會由Django自動轉換為資料庫表。
- tests.py:這個檔案用來寫當前應用程式的單元測試。
- views.py:這是我們處理Web應用程式請求(request)/響應(resopnse)週期的檔案。
現在我們建立了我們的第一個應用程式,讓我們來配置一下專案以便啟用這個應用程式。 要做到這一點,開啟settings.py並嘗試找到INSTALLED_APPS變數:
settings.py
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', ]
如你所見,Django預設已經安裝了6個內建應用程式。它們提供大多數Web應用程式所需的常用功能,如身份驗證,會話,靜態檔案管理(影象,JavaScript,CSS等)等。
我們將會在本系列教程中探索這些應用程式。但現在,先不管它們,只需將我們的應用程式boards新增到INSTALLED_APPS列表即可:
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'boards', # 譯者注:建議和作者一樣空一行來區別內建app和自定義的app ]
使用前面漫畫正方形和圓圈的比喻,黃色的圓圈就是我們的boards應用程式,django.contrib.admin, django.contrib.auth等就是紅色的圓圈。
Hello, World!
現在來寫我們的第一個檢視(view)。我們將在下一篇教程中詳細探討它。但現在,讓我們試試看看如何用Django建立一個新頁面。
開啟boards應用程式中的views.py檔案,並新增以下程式碼:
views.py
from django.http import HttpResponse
def home(request): return HttpResponse('Hello, World!')
檢視是接收httprequest物件並返回一個httpresponse物件的Python函式。接收 request 作為引數並返回 response 作為結果。這個流程你必須記住!
我們在這裡定義了一個簡單的檢視,命名為home,它只是簡單地返回一個資訊,一個字串hello,world!。
現在我們必須告訴Django什麼時候會呼叫這個view。這需要在urls.py檔案中完成:
urls.py
from django.conf.urls import url
from django.contrib import admin from boards import views urlpatterns = [ url(r'^$', views.home, name='home'), url(r'^admin/', admin.site.urls), ]
如果你將上面的程式碼片段與你的urls.py檔案進行比較,你會注意到我添加了以下新程式碼:
url(r'^$', views.home, name='home')
並從我們的應用程式boards中匯入了views模組通過:
from boards import views
和我之前提到的一樣,我們將在稍後詳細探討這些概念。
現在,Django使用正則表示式來匹配請求的URL。對於我們的home檢視,我使用^\$ 正則,它將匹配一個空路徑,也就是主頁(這個URL:http://127.0.0.1:8000 )。如果我想匹配的URL是 http://127.0.0.1:8000/homepage/ ,那麼我的URL正則表示式就會是:
url(r'^homepage/$', views.home, name='home'),
我們來看看會發生什麼:
python manage.py runserver
在一個Web瀏覽器中,開啟 http://127.0.0.1:8000 這個連結:
按照上述步驟就可以你的第一個檢視!
這是本系列教程的第一部分。在本教程中,我們學習瞭如何安裝最新的Python版本以及如何設定開發環境。我們還介紹了虛擬環境,開始了我們的第一個django專案,並已經建立了我們的初始應用程式。
第二部分將涉及模型,檢視,模板和URLs。我們將一起探索Django所有的基礎知識!
為了保持學習過程中頁面同步,在原作者Github上提供了原始碼。這個專案的當前狀態可以在release tag v0.1-lw下找到。下面是直達連結:
https://github.com/sibtc/django-beginners-guide/tree/v0.1-lw