1. 程式人生 > >Django學習(4)-- 模板(templates)

Django學習(4)-- 模板(templates)

我們所請求的頁面是由HttpResponse()函式的引數;那麼當我們請求複雜的頁面的時候,難道難道要把很多的字串寫到和這個函式的引數中嗎?顯然這不太合理啊;

所以在Django中我們就會用到了模板;模板中定義的就是我們一個一個的html頁面,我們只需要把模板中的頁面交給檢視呼叫就可以了。

使用模板的步驟:

  1在應用的資料夾下建立一個儲存html的資料夾取名為:templates

    一般我們一個應用會包含多個不同種類的html頁面,所以我們可以在templates資料夾下再建立一個資料夾儲存同一類HTML檔案

  2設定這個模板的查詢路徑

  3設計HTML檔案

  4檢視呼叫模板

    找到模板

    定義上下文

    渲染模板

1在應用test資料夾下建立資料夾templates,然後再在templates資料夾下建立一個資料夾booktest儲存這一類html檔案

 

2開啟專案資料夾下的setting.py檔案;設定TEMPLATES的DIRS值:

'DIRS': [os.path.join(BASE_DIR, 'templates')],

結果如下:

 

 

 

設計HTML檔案:

<html>
<head>
    <title>圖書列表</title>
</head>
<body>
<h1>{{title}}</h1>   
{
%for i in list%} {{i}}<br> {%endfor%} </body> </html>

註釋:{{變數名}}
   {%程式碼段%}

檢視呼叫模板:

from django.http import HttpResponse
from django.template import loader,RequestContext

def index(request):
    # 1.找到模板
    template=loader.get_template('test/index.html')
    # 2.定義上下文
    context=RequestContext(request,{'
list':range(10)}) # 3.渲染模板 return HttpResponse(template.render(context))

 

檢視呼叫模板簡寫

檢視呼叫模板都要執行以上三部分,於是Django提供了一個函式render封裝了以上程式碼。 方法render包含3個引數:

  • 第一個引數為request物件
  • 第二個引數為模板檔案路徑
  • 第三個引數為字典,表示向模板中傳遞的上下文資料
from django.shortcuts import render

def index(request):
    context={'list':range(10)}
    return render(request,'test/index.html',context)