1. 程式人生 > >完整的Django入門指南學習筆記1

完整的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