Django 模板继承4.2
生活随笔
收集整理的這篇文章主要介紹了
Django 模板继承4.2
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
模板繼承
- 模板繼承可以減少頁面內容的重復定義,實現頁面內容的重用
- 典型應用:網站的頭部、尾部是一樣的,這些內容可以定義在父模板中,子模板不需要重復定義
- block標簽:在父模板中預留區域,在子模板中填充
- extends繼承:繼承,寫在模板文件的第一行
- 定義父模板base.html
{ %block block_name%}
這里可以定義默認值
如果不定義默認值,則表示空字符串
{ %endblock%}
- 定義子模板index.html
{ % extends "base.html" %}
- 在子模板中使用block填充預留區域
{ %block block_name%}
實際填充內容
{ %endblock%}
說明
- 如果在模版中使用extends標簽,它必須是模版中的第一個標簽
- 不能在一個模版中定義多個相同名字的block標簽
- 子模版不必定義全部父模版中的blocks,如果子模版沒有定義block,則使用了父模版中的默認值
- 如果發現在模板中大量的復制內容,那就應該把內容移動到父模板中
- 使用可以獲取父模板中block的內容
- 為了更好的可讀性,可以給endblock標簽一個名字
{ % block block_name %}
區域內容
{ % endblock block_name %}
三層繼承結構
- 三層繼承結構使代碼得到最大程度的復用,并且使得添加內容更加簡單
- 如下圖為常見的電商頁面
?
1.創建根級模板
- 名稱為“base.html”
- 存放整個站點共用的內容
<!DOCTYPE html>
<html>
<head><title>{%block title%}{%endblock%} 水果超市</title>
</head>
<body>
top--{{logo}}
<hr/>
{%block left%}{%endblock%}
{%block content%}{%endblock%}
<hr/>
bottom
</body>
</html>
2.創建分支模版
- 繼承自base.html
- 名為“base_*.html”
- 定義特定分支共用的內容
- 定義base_goods.html
{%extends 'temtest/base.html'%}
{%block title%}商品{%endblock%}
{%block left%}
<h1>goods left</h1>
{%endblock%}
- 定義base_user.html
{%extends 'temtest/base.html'%}
{%block title%}用戶中心{%endblock%}
{%block left%}
<font color='blue'>user left</font>
{%endblock%}
- 定義index.html,繼承自base.html,不需要寫left塊
{%extends 'temtest/base.html'%}
{%block content%}
首頁內容
{%endblock content%}
3.為具體頁面創建模板,繼承自分支模板
- 定義商品列表頁goodslist.html
{%extends 'temtest/base_goods.html'%}
{%block content%}
商品正文列表
{%endblock content%}
- 定義用戶密碼頁userpwd.html
{%extends 'temtest/base_user.html'%}
{%block content%}
用戶密碼修改
{%endblock content%}
4.視圖調用具體頁面,并傳遞模板中需要的數據
- 首頁視圖index
logo='welcome to itcast'
def index(request):return render(request, 'temtest/index.html', {'logo': logo})
- 商品列表視圖goodslist
def goodslist(request):return render(request, 'temtest/goodslist.html', {'logo': logo})
- 用戶密碼視圖userpwd
def userpwd(request):return render(request, 'temtest/userpwd.html', {'logo': logo})
5.配置url
from django.conf.urls import url
from . import views
urlpatterns = [url(r'^$', views.index, name='index'),url(r'^list/$', views.goodslist, name='list'),url(r'^pwd/$', views.userpwd, name='pwd'),
]
總結
以上是生活随笔為你收集整理的Django 模板继承4.2的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 高并发下接口幂等性技术方案
- 下一篇: Python 虚拟环境 virtuale