模板 Template
思考 : 網站如何向客戶端返回一個漂亮的頁面呢?
提示 :
漂亮的頁面需要html、css、js.
可以把這一堆字段串全都寫到視圖中, 作爲HttpResponse()的參數,響應給客戶端.
問題 :
視圖部分代碼臃腫, 耦合度高.
這樣定義的字符串是不會出任何效果和錯誤的.
效果無法及時查看.有錯也不容易及時發現.
設想 :
是否可以有一個專門定義前端頁面的地方, 效果可以及時展示,錯誤可以及時發現,並且可以降低模塊間耦合度!
解決問題 :模板
MVT設計模式中的T,Template
在Django中, 將前端的內容定義在模板中, 然後再把模板交給視圖調用, 各種漂亮、炫酷的效果就出現了.
模板使用步驟
-
創建模板
-
設置模板查找路徑
-
模板接收視圖傳入的數據
-
模板處理數據
1.創建模板
-
在應用同級目錄下創建模板文件夾templates. 文件夾名稱固定寫法.
-
在templates文件夾下, 創建應用同名文件夾. 例, Book
-
在應用同名文件夾下創建網頁模板文件. 例 :index.html
2.設置模板查找路徑
3.模板接收視圖傳入的數據
-
視圖模板加載
4.模板處理數據
- 查看模板處理數據成果
總結View-Templates流程
配置文件 settings.py
1. BASE_DIR
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
當前工程的根目錄,Django會依此來定位工程內的相關文件,我們也可以使用該參數來構造文件路徑。
2. DEBUG 調試模式,創建工程後初始值爲True,即默認工作在調試模式下。
作用:
-
修改代碼文件,程序自動重啓
-
Django程序出現異常時,向前端顯示詳細的錯誤追蹤信息,例如
-
而非調試模式下,僅返回Server Error (500)
注意:部署線上運行的Django不要運行在調式模式下,記得修改DEBUG=False和ALLOW_HOSTS。
3. 本地語言與時區
Django支持本地化處理,即顯示語言與時區支持本地化。
本地化是將顯示的語言、時間等使用本地的習慣,這裏的本地化就是進行中國化,中國大陸地區使用簡體中文,時區使用亞洲/上海時區,注意這裏不使用北京時區表示。
初始化的工程默認語言和時區爲英語和UTC標準時區
# settings.py
LANGUAGE_CODE = 'en-us' # 語言
TIME_ZONE = 'UTC' # 時區# 時區
將語言和時區修改爲中國大陸信息
LANGUAGE_CODE = 'zh-Hans'
TIME_ZONE = 'Asia/Shanghai'
靜態文件
項目中的CSS、圖片、js都是靜態文件。一般會將靜態文件放到一個單獨的目錄中,以方便管理。在html頁面中調用時,也需要指定靜態文件的路徑,Django中提供了一種解析的方式配置靜態文件路徑。靜態文件可以放在項目根目錄下,也可以放在應用的目錄下,由於有些靜態文件在項目中是通用的,所以推薦放在項目的根目錄下,方便管理。
爲了提供靜態文件,需要配置兩個參數:
-
STATICFILES_DIRS存放查找靜態文件的目錄
-
STATIC_URL訪問靜態文件的URL前綴
示例
1) 在項目根目錄下創建static目錄來保存靜態文件。
2) 在bookmanager/settings.py中修改靜態文件的兩個參數爲
# settings.py
STATIC_URL = '/static/'
STATICFILES_DIRS = [
os.path.join(BASE_DIR, 'static'),
]
3)此時在static添加的任何靜態文件都可以使用網址 /static/文件在static 中的路徑來訪問了。
例如,我們向static目錄中添加一個index.html文件,在瀏覽器中就可以使用 127.0.0.1:8000/static/index.html來訪問。
或者我們在static目錄中添加了一個子目錄和文件book/detail.html,在瀏覽器中就可以使用127.0.0.1:8000/static/book/detail.html來訪問。
App應用配置
在每個應用目錄中都包含了apps.py文件,用於保存該應用的相關信息。
在創建應用時,Django會向apps.py文件中寫入一個該應用的配置類,如
from django.apps import AppConfig
class BookConfig(AppConfig):
name = 'book'
我們將此類添加到工程 settings.py 中的 INSTALLED_APPS 列表中,表明註冊安裝具備此配置屬性的應用。
-
AppConfig.name屬性表示這個配置類是加載到哪個應用的,每個配置類必須包含此屬性,默認自動生成。
-
AppConfig.verbose_name屬性用於設置該應用的直觀可讀的名字,此名字在Django提供的Admin管理站點中會顯示,如
# admin.py from django.apps import AppConfig class UsersConfig(AppConfig): name = 'book' verbose_name = '圖書管理'