1. 程式人生 > >django基礎知識之模板:

django基礎知識之模板:

編譯 處理 加載 res 對象 應用 基礎知識 render ont

模板介紹

  • 作為Web框架,Django提供了模板,可以很便利的動態生成HTML
  • 模版系統致力於表達外觀,而不是程序邏輯
  • 模板的設計實現了業務邏輯(view)與顯示內容(template)的分離,一個視圖可以使用任意一個模板,一個模板可以供多個視圖使用
  • 模板包含
    • HTML的靜態部分
    • 動態插入內容部分
  • Django模板語言,簡寫DTL,定義在django.template包中
  • 由startproject命令生成的settings.py定義關於模板的值:
    • DIRS定義了一個目錄列表,模板引擎按列表順序搜索這些目錄以查找模板源文件
    • APP_DIRS告訴模板引擎是否應該在每個已安裝的應用中查找模板
  • 常用方式:在項目的根目錄下創建templates目錄,設置DIRS值
DIRS=[os.path.join(BASE_DIR,"templates")]

模板處理

  • Django處理模板分為兩個階段
  • Step1 加載:根據給定的標識找到模板然後預處理,通常會將它編譯好放在內存中
loader.get_template(template_name),返回一個Template對象
  • Step2 渲染:使用Context數據對模板插值並返回生成的字符串
Template對象的render(RequestContext)方法,使用context渲染模板
  • 加載渲染完整代碼:
from django.template import loader, RequestContext
from django.http import HttpResponse

def index(request):
    tem = loader.get_template(‘temtest/index.html‘)
    context = RequestContext(request, {})
    return HttpResponse(tem.render(context))

快捷函數

  • 為了減少加載模板、渲染模板的重復代碼,django提供了快捷函數
  • render_to_string("")
  • render(request,‘模板‘,context)
from django.shortcuts import render

def index(request):
    return render(request, ‘temtest/index.html‘)

django基礎知識之模板: