django模板結構優(yōu)化的方法
模版結構優(yōu)化
引入模版
有時候一些代碼是在許多模版中都用到的。如果我們每次都重復的去拷貝代碼那肯定不符合項目的規(guī)范。一般我們可以把這些重復性的代碼抽取出來,就類似于Python中的函數(shù)一樣,以后想要使用這些代碼的時候,就通過 include 包含進來。這個標簽就是 include 。示例代碼如下:
# header.html <p>我是header</p> # footer.html <p>我是footer</p> # main.html {% include 'header.html' %} <p>我是main內容</p> {% include 'footer.html' %}
include 標簽尋找路徑的方式。也是跟 render 渲染模板的函數(shù)是一樣的。
默認 include 標簽包含模版,會自動的使用主模版中的上下文,也即可以自動的使用主模版中的變量。如果想傳入一些其他的參數(shù),那么可以使用 with 語句。示例代碼如下:
# header.html <p>用戶名:{{ username }}</p> # main.html {% include "header.html" with username='huangyong' %}
模板繼承:
在前端頁面開發(fā)中。有些代碼是需要重復使用的。這種情況可以使用 include 標簽來實現(xiàn)。也可以使用另外一個比較強大的方式來實現(xiàn),那就是模版繼承。模版繼承類似于 Python 中的類,在父類中可以先定義好一些變量和方法,然后在子類中實現(xiàn)。模版繼承也可以在父模版中先定義好一些子模版需要用到的代碼,然后子模版直接繼承就可以了。并且因為子模版肯定有自己的不同代碼,因此可以在父模版中定義一個block接口,然后子模版再去實現(xiàn)。以下是父模版的代碼:
{% load static %} <!DOCTYPE html> <html lang="en"> <head> <link rel="stylesheet" href="{% static 'style.css' %}" rel="external nofollow" /> <title>{% block title %}我的站點{% endblock %}</title> </head> <body> <div id="sidebar"> {% block sidebar %} <ul> <li><a href="/" rel="external nofollow" >首頁</a></li> <li><a href="/blog/" rel="external nofollow" >博客</a></li> </ul> {% endblock %} </div> <div id="content"> {% block content %}{% endblock %} </div> </body> </html>
這個模版,我們取名叫做 base.html ,定義好一個簡單的 html 骨架,然后定義好兩個 block 接口,讓子模版來根據(jù)具體需求來實現(xiàn)。子模板然后通過 extends 標簽來實現(xiàn),示例代碼如下:
{% extends "base.html" %} {% block title %}博客列表{% endblock %} {% block content %} {% for entry in blog_entries %} <h2>{{ entry.title }}</h2> <p>{{ entry.body }}</p> {% endfor %} {% endblock %}
需要注意的是:extends標簽必須放在模版的第一行。
子模板中的代碼必須放在block中,否則將不會被渲染。
如果在某個 block 中需要使用父模版的內容,那么可以使用 {{block.super}} 來繼承。比如上例, {%block title%} ,如果想要使用父模版的 title ,那么可以在子模版的 title block 中使用 {{ block.super }} 來實現(xiàn)。
在定義 block 的時候,除了在 block 開始的地方定義這個 block 的名字,還可以在 block 結束的時候定義名字。比如 {% block title %}{% endblock title %} 。這在大型模版中顯得尤其有用,能讓你快速的看到 block 包含在哪里。
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
- django框架模型層功能、組成與用法分析
- 利用Django模版生成樹狀結構實例代碼
- Django工程的分層結構詳解
- Django-Model數(shù)據(jù)庫操作(增刪改查、連表結構)詳解
- Django框架視圖層URL映射與反向解析實例分析
- Django框架視圖函數(shù)設計示例
- 使用PyCharm配合部署Python的Django框架的配置紀實
- Python的Django框架中設置日期和字段可選的方法
- 分析Python的Django框架的運行方式及處理流程
- Linux下將Python的Django項目部署到Apache服務器
- Python的Django框架中settings文件的部署建議
- Django框架組成結構、基本概念與文件功能分析
相關文章
使用Python和scikit-learn創(chuàng)建混淆矩陣的示例詳解
這篇文章主要介紹了使用Python和scikit-learn創(chuàng)建混淆矩陣的示例詳解,該示例包括生成數(shù)據(jù)集、為數(shù)據(jù)集選擇合適的機器學習模型、構建、配置和訓練它,最后解釋結果,即混淆矩陣,需要的朋友可以參考下2022-06-06