零基礎(chǔ)學(xué)習(xí)Django

1.Django是什么?

jango是一個開放源代碼的Web應(yīng)用框架,由Python寫成。采用了MTV的框架模式,即模型M,視圖V和模版T。它最初是被開發(fā)來用于管理勞倫斯出版集團旗下的一些以新聞內(nèi)容為主的網(wǎng)站的,即是CMS(內(nèi)容管理系統(tǒng))軟件。并于2005年7月在BSD許可證下發(fā)布。這套框架是以比利時的吉普賽爵士吉他手Django Reinhardt來命名的。

1.1.框架介紹

Django是高水準(zhǔn)的Python編程語言驅(qū)動的一個開源模型.視圖,控制器風(fēng)格的Web應(yīng)用程序框架,它起源于開源社區(qū)。使用這種架構(gòu),程序員可以方便、快捷地創(chuàng)建高品質(zhì)、易維護、數(shù)據(jù)庫驅(qū)動的應(yīng)用程序。這也正是OpenStack的Horizon組件采用這種架構(gòu)進行設(shè)計的主要原因。另外,在Dj ango框架中,還包含許多功能強大的第三方插件,使得Django具有較強的可擴展性 [1] 。Django 項目源自一個在線新聞 Web 站點,于 2005 年以開源的形式被釋放出來。Django 框架的核心組件有:

  1. 用于創(chuàng)建模型的對象關(guān)系映射;

  2. 為最終用戶設(shè)計較好的管理界面;

  3. URL 設(shè)計;

  4. 設(shè)計者友好的模板語言;

  5. 緩存系統(tǒng)。

1.2架構(gòu)設(shè)計

Django已經(jīng)成為web開發(fā)者的首選框架,是一個遵循 MVC 設(shè)計模式的框架。MVC是Model、View、Controller三個單詞的簡寫,分別代表模型、視圖、控制器。Django其實也是一個MTV 的設(shè)計模式。MTV是Model、Template、View三個單詞的簡寫,分別代表模型、模版、視圖 [3] 。但是在Django中,控制器接受用戶輸入的部分由框架自行處理,所以 Django 里更關(guān)注的是模型(Model)、模板(Template)和視圖(Views),稱為 MTV模式。它們各自的職責(zé)如下:

層次 職責(zé)
模型(Model),即數(shù)據(jù)存取層 處理與數(shù)據(jù)相關(guān)的所有事務(wù): 如何存取、如何驗證有效性、包含哪些行為以及數(shù)據(jù)之間的關(guān)系等。
模板(Template),即表現(xiàn)層 處理與表現(xiàn)相關(guān)的決定: 如何在頁面或其他類型文檔中進行顯示。
視圖(View),即業(yè)務(wù)邏輯層 存取模型及調(diào)取恰當(dāng)模板的相關(guān)邏輯。模型與模板的橋梁。

2.通過創(chuàng)建Django項目來學(xué)習(xí)Django

2.1前期準(zhǔn)備

1.確保安裝中安裝 Python 編程語言,2.7 系列(至少 2.7.5)或 3.4 版本以上都行。
2.python包管理器(pip)
包管理器,不管是針對 Python 的、針對操作系統(tǒng)的,還是針對其他環(huán)境的,是一種自動安裝、升
級、配置和刪除包的軟件,解放了你的雙手,無需你自己動手下載、安裝和維護軟件。
使用 pip 命令運行 pip 試試看。如果提示找不到 pip 命令,說明你要安裝 pip。你還要確保自己的系統(tǒng)中安裝了下面兩個包。執(zhí)行下述命令,安裝 Django 和 Pillow(處理圖像的
Python 庫):

pip install django==2.1.14
pip install pillow

3.創(chuàng)建并激活虛擬環(huán)境
~ Linux/macOS: source venv/bin/activate
~ Windows: "venv/Scripts/activate"

4.集成開發(fā)環(huán)境
集成開發(fā)環(huán)境有很多,這里用的是pycharm
5.代碼倉庫
開發(fā)過程中應(yīng)該把代碼納入版本控制系統(tǒng)(Git),這里不做詳細介紹,列出一些常用命令:

  1. git init ---> 將普通文件夾變成版本倉庫
  2. git add . ---> 將文件從工作區(qū)同步到暫存區(qū)
  3. git commit -m '...' ---> 將文件提交到本地倉庫
  4. git status / git log
  5. git remote add origin <url> ---> 綁定遠端倉庫
  6. git push -u origin master ---> 將本地代碼推到服務(wù)器

2.2創(chuàng)建Django項目

  • 第一種方式:
  1. django-admin startproject django1906

  2. 使用PyCharm打開項目并創(chuàng)建虛擬環(huán)境

  3. 安裝項目所需依賴項

  4. 運行項目 ~ python manage.py runserver ~ Add Configuration --> + --> Python --> Script Path (

  • 第二種方式:
  1. 用PyCharm創(chuàng)建一個普通的Python項目

  2. 安裝Django所需的依賴項 ~ pip install django==2.1.14

  3. 把Python項目變成Django項目 ~ django-admin startproject django1906 .

  4. 運行項目

  • 第三種方式:
  1. 克隆項目到本地 ~ 使用PyCharm的"get from version control" ~ git clone git@gitee.com:jackfrued/django1906.git

  2. 創(chuàng)建虛擬環(huán)境 ~ Linux/macOS: source venv/bin/activate ~ Windows: "venv/Scripts/activate"

  3. 重建依賴項 ~ pip install -r requirements.txt

此時你會發(fā)現(xiàn),你的 Django1906目錄中出現(xiàn)了與項目同名的一個目錄,在這個目錄中你會看到兩個內(nèi)容:
? 另一個與項目同名的目錄
? 一個 Python 腳本,名為 manage.py

我們將把內(nèi)部那個 Django1906 目錄稱為項目配置目錄。在這個目錄中,你會看到 4 個 Python 腳本,下面簡單介紹一下:

? init.py:一個空 Python 腳本,存在的目的是告訴 Python 解釋器,這個目錄是一個
Python 包;
? settings.py:存放 Django 項目的所有設(shè)置;
? urls.py:存放項目的 URL 模式;
? wsgi.py:用于運行開發(fā)服務(wù)器和把項目部署到生產(chǎn)環(huán)境的一個 Python 腳本
項目目錄中有個名為 manage.py 的文件,在開發(fā)過程中時常用到。它提供了一系列維護 Django 項目的命令,例如通過它可以運行內(nèi)置的 Django 開發(fā)服務(wù)器,可以測試應(yīng)用,還可以運行多個數(shù)據(jù)庫命令。幾乎每個 Django 命令都要調(diào)用這個腳本。
你現(xiàn)在就可以使用 manage.py 腳本,執(zhí)行下述命令試試:

python manage.py runserver

打開 Web 瀏覽器,輸入 URL http://127.0.0.1:8000/。你將看到django成功搭建的網(wǎng)頁。
開發(fā)服務(wù)器隨時可以停止,只需在終端或命令提示符窗口中按 CTRL+C 鍵。

2.3創(chuàng)建Django應(yīng)用

一個 Django 應(yīng)用完成一件特殊的任務(wù)。一個網(wǎng)站需要多少應(yīng)用,要視其功能而定。例如,一個項目中可能包含一個投票應(yīng)用、一個注冊應(yīng)用和一個與內(nèi)容有關(guān)的應(yīng)用。在另一個項目中,我們可能想復(fù)用投票和注冊應(yīng)用,因此可以把它們拿過來用。下面創(chuàng)建polls應(yīng)用。
在Django項目所在的目錄中執(zhí)行下述命令:

python manage.py startapp polls

startapp 目錄在項目的根目錄中創(chuàng)建一個新目錄,這個目錄名為polls,其中包含一些python腳本:
? init.py:與前面那個的作用完全一樣;
? admin.py:注冊模型,讓 Django 為你創(chuàng)建管理界面;
? apps.py:當(dāng)前應(yīng)用的配置;
? models.py:存放應(yīng)用的數(shù)據(jù)模型,即數(shù)據(jù)的實體及其之間的關(guān)系;
? tests.py:存放測試應(yīng)用代碼的函數(shù);
? views.py:存放處理請求并返回響應(yīng)的函數(shù);
? migrations 目錄:存放與模型有關(guān)的數(shù)據(jù)庫信息。
views.py 和 models.py 是任何應(yīng)用中都有的兩個文件,是 Django 所采用的設(shè)計模式(即“模型-視圖-模板”模式)的主要部分。
在動手創(chuàng)建模型和視圖之前,必須告訴 Django 項目這個新應(yīng)用的存在。為此,要修改項目配置目錄中的 settings.py 文件。打開那個文件,找到 INSTALLED_APPS 列表,把 polls添加到末尾:

INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'polls', ]

為了方便使用呢,我們還可以配置應(yīng)用文件設(shè)置語言時區(qū):
找到全局配置文件找到以下代碼并修改

LANGUAGE_CODE = 'zh-hans'
TIME_ZONE = 'Asia/Chongqing'

再次運行manage.py,確認Django識別了這個新應(yīng)用。如果能正常啟動服務(wù)器,沒有任何錯誤,而且此時可以看到一個中文的django歡迎界面,說明可以執(zhí)行下一步了。

2.4 編寫視圖

創(chuàng)建好polls應(yīng)用后,下面編寫一個簡單的視圖,在這里為了簡單起見,暫不使用模型或者模板,而是把一些文本回發(fā)給客戶端。
打開polls目錄里的view.py文件。寫入下述代碼:

from django.http import HttpResponse
def index(request):
return HttpResponse("hello django!")

這個簡單的試圖是如何運作的:

? 首先,從 django.http 模塊中導(dǎo)入 HttpResponse 對象。
? 在 views.py 文件中,一個函數(shù)就是一個視圖。這里我們只編寫了一個視圖,即 index。
? 視圖函數(shù)至少有一個參數(shù),即一個 HttpRequest 對象,它也在 django.http 模塊中。按約定,這個參數(shù)名為 request,不過你可以根據(jù)自己的意愿隨意使用其他名稱。
? 視圖必須返回一個 HttpResponse 對象。簡單的 HttpResponse 對象的參數(shù)是一個字符串,表示要發(fā)給客戶端的頁面內(nèi)容。

有了視圖還不行,為了讓用戶能訪問視圖,要把一個統(tǒng)一資源定位地址(Uniform Resource Loca?tor,URL)映射到視圖上
為此,打開項目配置目錄中的 urls.py 文件,在 urlpatterns 中添加一行代碼:

from polls import views
urlpatterns = [
 path('index', index),
 path('admin/', admin.site.urls),
]

新加的那行代碼把根 URL 映射到 rango 應(yīng)用的 index 視圖上。啟動開發(fā)服務(wù)器(python manage.py runserver),訪問 http://127.0.0.1:8000 或你指定的其他地址。你將看到 index 視圖渲染的輸出。

2.5使用模板

2.5.1為什么使用模板?

網(wǎng)站中的不同頁面通常使用相同的布局,提供通用的頁頭(header)和頁腳(footer),為用戶呈現(xiàn)導(dǎo)航,體現(xiàn)一種一致性。Django 模板能讓開發(fā)者輕易實現(xiàn)這樣的設(shè)計要求,而且還能把應(yīng)用邏輯(視圖代碼)與表現(xiàn)(應(yīng)用的外觀)區(qū)分開。
目前,我們只把一個 URL 映射到一個視圖上。然而,Django 框架采用的是“模型-視圖-模板”架構(gòu)。

2.5.2模板是什么

Django 的模板可以理解為構(gòu)建完整的 HTML 頁面所需的骨架。模板中有靜態(tài)內(nèi)容(不變的部分),也有特殊的句法(動態(tài)內(nèi)容,即模板標(biāo)簽)。Django 視圖會把動態(tài)內(nèi)容替換成真正的數(shù)據(jù),生成最終的 HTML 響應(yīng)。
若想在 Django 應(yīng)用中使用模板,要創(chuàng)建兩個目錄,用于存放模板文件。
在 Django 項目配置目錄中創(chuàng)建一個名為 templates 的目錄。注意,這個目錄要與項目的 manage.py 腳本放在同一級。在這個新目錄中再創(chuàng)建一個目錄名為 polls(建議把各應(yīng)用的模板放在單獨的子目錄中。這就是我們在 templates 目錄中創(chuàng)建 polls子目錄的原因。如果想打包應(yīng)用,把它分發(fā)給其他開發(fā)者,這樣就便于區(qū)分模板屬于哪個應(yīng)用)。
接下來要告訴 Django 你把模板放在什么位置。打開項目的 settings.py 文件,找到 TEMPLATES。為了告訴 Django,模板在何處,我們要修改 DIRS 列表(默認為空)

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [os.path.join(BASE_DIR, 'templates'), ],
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
        },
    },
]

2.5.3添加一個模板

模板目錄和路徑設(shè)置好之后,在 templates/polls/ 目錄中創(chuàng)建一個文件,命名為 index.html。在這個新文件中寫入下述 HTML 代碼

<!DOCTYPE html>
<html>
<head>
    <title>polls</title>
</head>

<body>
    <h1>  Says...</h1>
    <div>
            hey there partner! <br />
              <strong>{{ boldmessage }}</strong><br />
</div>
<div>
                      <a href="/polls/about/">About</a><br />
            </div>
</body>

</html>

在這里有些內(nèi)容不是 HTML,而是 {{ boldmessage }} 形式。這是 Django 模板變量。我們可以為這樣的變量設(shè)值,這樣渲染模板后便會顯示我們設(shè)定的值。為了使用這個模板,我們要調(diào)整一下前面編寫的 index() 視圖,不再分發(fā)一個簡單的響應(yīng)對象

def index(request):
# 構(gòu)建一個字典,作為上下文傳給模板引擎
# 注意,boldmessage 鍵對應(yīng)于模板中的 {{ boldmessage }}
context_dict = {'boldmessage': "Crunchy, creamy, cookie, candy, cupcake!"}
# 返回一個渲染后的響應(yīng)發(fā)給客戶端
# 為了方便,我們使用的是 render 函數(shù)的簡短形式
# 注意,第二個參數(shù)是我們想使用的模板
return render(request, 'rango/index.html', context=context_dict)

首先,構(gòu)建一個字典,設(shè)定要傳給模板的數(shù)據(jù)。然后,調(diào)用 render() 輔助函數(shù)。這個函數(shù)的參數(shù)是 request 對象、模板的文件名和上下文字典。render() 函數(shù)將把上下文字典中的數(shù)據(jù)代入模板,生成一個完整的 HTML 頁面,作為 HttpResponse 對象返回,分發(fā)給 Web 瀏覽器。
我們已經(jīng)更新視圖,用上了模板?,F(xiàn)在啟動 Django 開發(fā)服務(wù)器,然后訪問 http://127.0.0.1:8000/polls/。你應(yīng)該能看到這個簡單的 HTML 模板渲染出來了。
到這里我們基本的一個django的小項目就已經(jīng)創(chuàng)建成功啦。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容