Django-05 MTV和模板層 MVC和MTV

MVC和MTV

MVC代表Model-View-Controller(模型-視圖-控制器)模式。

  • M 模型層(Model),主要用於對數據庫層的封裝
  • V 視圖層(View),用於想用戶展示結果(WHAT+HOW)
  • C 控制(Controller),用於處理請求,獲取數據,返回結果(重要)‘
作用:降低模塊間的耦合

MTV代表Model-Template-View(模型-模板-視圖)模式。

  • M 模型層(Model),主要與數據庫交互
  • T 模板層(Template),負責呈現內容到瀏覽器(HOW)
  • V視圖層(View)是核心,負責接收請求,獲取數據,返回結果(WHAT)


什麼是模板

1,模板是可以根據字典數據動態變化的html網頁
2,模板可以根據視圖中傳遞的字典數據動態生成對應的html網頁。

模板配置

創建模板文件夾<項目名>/templates
在settings.py中templates配置項
1,BACKEND:指定模板的引擎
2,DIRS:模板的搜索目錄(可以是一個或多個)
3,APP_DIRS:是否要在應用中的templates文件夾中搜索模板文件。
4,OPTIONS:有關模板的選項

  • 配置項中需要修改的部分
    設置DIRS-'DIRS':[os.path.join(BASE_DIR,'templates')],

模板的加載方式

方案1-通過loader獲取模板,通過HttpResponse進行響應在視圖函數中

from django.template import loader
# 1. 通過loader加載模板
t = loader.get_template("模板文件名")
# 2. 將t轉換成HTML字符串
html = t.render(字典數據)
# 3. 用響應對象將轉換的字符串內容返回給瀏覽器
return HttpReponse(html)

方案2-使用render()直接加載並響應模板
在視圖函數中

from django.shortcuts import render
return render(request,'模板文件名',字典數據)

視圖層與模板層之間的交互

1,視圖函數中可以將python變量封裝到字典中傳遞到模板
樣例

def xxx_view(request):
  dic = {
    "變量1":"值1",
    "變量2":"值2",
  }
  return render(request,'xxx.html',dic)

2,模板中,我們可以用{{變量名}}的語法,調用視圖傳進來的變量

{{變量1}}{{變量2}}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章