背景知識
要使用 Django,首先必須先安裝 Django。
下圖是 Django 官網的版本支持,我們可以看到上面有一個 LTS 存在。什么是 LTS 呢?LTS ,long-term support,也就是長期技術支持版的意思。長期技術支持版意味着資料的豐富程度和穩定性會比其他版本的要好。可以看到,目前的長期技術是 1.11,而上一個長期技術支持版是 1.8 ,我們盡量使用 1.11 長期技術支持版,因為企業在做技術選型的時候,選擇的往往不是最新的,而是最穩定的。
安裝 Django,打開 Django 項目
選定版本之后,安裝就一句
pip3 install django==1.11.11
安裝完成之后可以查看 Django 版本
django-admin --version
新建 Django 項目
django-admin startproject 項目名稱
當然,我們開發 Django 項目的時候,通常會使用 pycharm 這款 IDE。
如上圖所示,你可以設置項目存儲的路徑,然后可以新建一個虛擬環境,也可以選擇使用已有的虛擬環境。
新建項目打開之后,你會看到如下圖所示的文件結構。
manage.py # 管理Django項目的入口文件 settings.py # 設置相關 urls.py # 路徑與函數對應關系 wsgi.py # socket通信相關 __init__.py # 只是為了表明這個文件夾是一個包
Django版,根據不同的路徑,返回不同的內容
我們先像上一次那樣,一步一步來,熟悉 Django 項目結構。
我們先把路徑與函數的對應關系處理好,先在 urls.py 中進行配置。
HttpResponse 模塊的引入
在這里,我們需要引進 Django 自帶的處理 HTTP 響應的模塊 HttpResponse
HttpResponse 模塊可以幫我們做 HTTP 協議的響應,我們只需要關心處理用戶請求的函數就可以了,而不需要關注協議本身所做的事情。

from django.conf.urls import url # 導入 Django 自帶的 HttpResponse 模塊,用它來幫我們做HTTP協議的響應 # 這樣,我們只需要關心處理用戶請求的函數就可以了,而不需要關注協議本身所做的事情 from django.shortcuts import HttpResponse def yimi(request): # request參數保存了所有和用戶瀏覽器請求相關的數據 # 把想要顯示在頁面上的內容寫到 HttpResponse 函數的括號里面即可 return HttpResponse('<h1>hello,yimi!</h1>') def xiaohei(request): # request參數保存了所有和用戶瀏覽器請求相關的數據 # 把想要顯示在頁面上的內容寫到 HttpResponse 函數的括號里面即可 return HttpResponse('<h1>hello,xiaohei!</h1>') # 保存了路徑與函數的對應關系 urlpatterns = [ url(r'^yimi/$', yimi), url(r'^xiaohei/$', xiaohei), ]
配置好后,如何查看呢?需要運行 Django 項目。
命令行運行 Django 項目:在項目的根目錄下(也就是有manage.py的那個目錄),運行:
python3 manage.py runserver IP:端口 --> 在指定的IP和端口啟動 python3 manage.py runserver 端口 --> 在指定的端口啟動 python3 manage.py runserver --> 默認在本機的8000端口啟動
pycharm 運行:點擊右上角綠色的小三角,直接可以啟動Django項目(前提是小三角左邊是你的Django項目名)。
運行后,輸入 127.0.0.1:8000/xiaohei/ 可以看到正常的運行結果。
可以感受到,使用 Django 框架之后,開發服務端方便了很多。我們只需要做 ①定義函數 ②定義函數和路徑的對應關系 這兩件事情就可以使得服務端正常響應。
settings配置
settings.py中有幾個配置我們必須清楚的。
BASE_DIR 配置
所以,BASE_DIR 也就是......
TEMPLATES 配置
有人可能會納悶,這里 'DIRS' 為什么不使用字符串拼接的方式呢?原因,你這一個項目在開發的時候用的是 Windows 平台,項目最終都要部署到服務器,服務器卻不一定是 Windows 平台的,大部分情況下都是 Linux 平台,Windows 平台和 Linux 平台的路徑分隔符是不一樣的,所以通過 os 模塊函數進行拼接會更好。
STATICFILES_DIRS 靜態文件文件夾配置
一個 HTML 通常會有許許多多的 CSS 樣式和 js 動畫效果,因此會有許許多多的 css 文件和 js 文件,它們通常不會和 HTML 文件放在一起,而是放在一個叫 static 的文件夾中。這個 static 文件夾就叫做靜態文件夾。
在項目根目錄下新建 static 目錄
我們新建了 static 目錄用來放靜態文件,要想要 Django 幫我們找到這些靜態文件,必須先在 settings.py 中告訴它這個文件夾在哪里。
當然,如果你有多個靜態文件目錄,你也可以寫到 STATICFILES_DIRS 里面,Django 會按照你寫的目錄的先后順序,從上往下進行靜態文件的查找。
返回完整的 HTML 頁面
模板的引入
我們在 templates 目錄下新建了一個 yimi.html,然后在 urls.py 中通過之前 python 文件讀取的方式返回完整的 HTML 頁面
可以發現,通過 python 的方式查找文件需要我們自己制定文件路徑,過於麻煩
render 模塊的引入
這時候,我們可以引入 render 模塊,讓 Django 自己去幫我們找 HTML 文件

from django.conf.urls import url # 導入 Django 自帶的 HttpResponse 模塊,用它來幫我們做HTTP協議的響應 # 這樣,我們只需要關心處理用戶請求的函數就可以了,而不需要關注協議本身所做的事情 from django.shortcuts import HttpResponse, render # 要返回一個完整的HTML文件,就需要用到render模塊 def yimi(request): # request參數保存了所有和用戶瀏覽器請求相關的數據 # 把想要顯示在頁面上的內容寫到 HttpResponse 函數的括號里面即可 # with open('./templates/yimi.html', 'r', encoding='utf-8') as f: # data = f.read() # return HttpResponse('<h1>hello,yimi!</h1>') # render的第一個參數是request,第二個參數是我們想要返回的HTML文件名字 # 這個文件的路徑就是之前在settings.py中配置好的 templates return render(request, 'yimi.html') def xiaohei(request): # request參數保存了所有和用戶瀏覽器請求相關的數據 # 把想要顯示在頁面上的內容寫到 HttpResponse 函數的括號里面即可 return HttpResponse('<h1>hello,xiaohei!</h1>') # 保存了路徑與函數的對應關系 urlpatterns = [ url(r'^yimi/$', yimi), url(r'^xiaohei/$', xiaohei), ]
靜態文件的引入
你可能會問:“我寫了一個超級好看的頁面,把它的 css 獨立出來,放在 Django 項目的根目錄下了,應該怎么在 HTML 頁面中引進來呢?”
只需下圖所示一步即可
views.py 文件的引入
到這里,你可能會發現一些問題。
例如,我們現在的全部邏輯處理函數 和 函數與路徑的對應關系,都是寫在 urls.py 中的,隨着我們項目的發展壯大,我們需要的處理函數將會越來越多,將處理函數與函數路徑的對應關系寫在一個文件中,將會大大影響我們對程序的理解。
因此,我們現在要將我們自己寫的 邏輯處理函數 和 函數與路徑的對應關系 分離開,分成獨立的文件。一個專門用來寫邏輯處理函數,用於處理客戶端發過來的請求;另一個則專門用來寫函數與路徑的對應關系。
在 項目同名 APP 目錄下新建一個 views.py 文件,把原來在 urls.py 中寫的邏輯處理函數全部移到 views.py 中。
urls.py 文件中需要導入我們寫的那些邏輯函數。
這樣下來,Django 項目中各個文件的關系也就清晰多了,而且,我不會告訴你,到現在,你已經接觸到了 Django MTV 框架的精髓的哦^_^
下節預告
到這里,相信你也已經成功地安裝了 Django ,並熟悉了 HttpResponse 模塊、render 模塊的使用,還有 settings 中 BASE_DIR、TEMPLATES、STATICFILES_DIRS 的配置,知曉了為什么要把 views 和 urls 文件進行分離。
下一節,我們將通過一個用戶登錄頁面,來進一步學習 Django 的使用,體會 Django 的魅力所在。
作者: 守護窗明守護愛
出處: https://www.cnblogs.com/chuangming/p/9076721.html
本文版權歸作者和博客園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出。如有問題,可郵件(1269619593@qq.com)咨詢.