背景
借助于Django完成一個(gè)簡(jiǎn)單的web前端頁(yè)面葡秒,views文件里面會(huì)將前端html語(yǔ)言和后端python代碼寫在一起咒锻,不利于維護(hù)七扰。而且也背離了Django的核心:前后端分離言津。Django提供了一套模版系統(tǒng)可把頁(yè)面設(shè)計(jì)html語(yǔ)言與python代碼分開荣暮,方便維護(hù)成畦。
模版系統(tǒng)
1.初級(jí)版
1)導(dǎo)入template模塊距芬,即from django import template
2)前端將html代碼傳入到template的Template對(duì)象,如t = template.Template('My name is {{ name }}.')
3)步驟2中變量的值【name】可通過(guò)template的Context類【可接受字典】進(jìn)行映射循帐,如c = template.Context({'name': 'Stephane'})
4)通過(guò)前面幾個(gè)步驟框仔,已經(jīng)得到前端代碼的html【有字符串&變量值】,但還缺少渲染步驟拄养,此時(shí)可通過(guò)template的render對(duì)象將前端代碼渲染出來(lái)【上下文】离斩。如t.render(c)
2.進(jìn)階版
1)利用模板加載機(jī)制,將前端的html代碼固定放在templates文件夾下
2)使用django.shortcuts模塊中名為render()的函數(shù)替換前面步驟中創(chuàng)建Context和HttpResponse對(duì)象等瘪匿,一行命令可達(dá)到相同的效果
注:同時(shí)存在多個(gè)app【即多個(gè)子模塊】時(shí)跛梗,setting文件中可通過(guò)以下兩種方式的設(shè)置達(dá)到A app查找到A app的templates文件下的html
方式一:
修改setting文件中TEMPLATES設(shè)置'DIRS':?[os.path.join(BASE_DIR,'polls/templates')] 將所有的app的目錄添加到列表,如A/templates B/templates C/templates 等
方式二:
1)修改setting文件中TEMPLATES設(shè)置'DIRS':[os.path.join(BASE_DIR,'templates')]
2)INSTALLED_APPS將所有的app的目錄添加到列表中
INSTALLED_APPS=['django.contrib.admin','django.contrib.auth','django.contrib.contenttypes','django.contrib.sessions','django.contrib.messages','django.contrib.staticfiles','A','B','C']等
繼承前端html模板
1.定義一個(gè)base.html文件柿顶,包含基本的html的模塊
2.其他html引用的使用需要在頭部增加{% extends %}茄袖,表明會(huì)繼承6.1中的base.html
注:需與html的一些模塊標(biāo)簽結(jié)合使用