日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

Django 模板继承4.2

發布時間:2023/11/28 生活经验 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。