10.模板優化之include標籤

 

include標籤

  1. 有些模版代碼是重複的.所以能夠單獨抽取出來,之後哪裏須要用到,就直接使用{% include '模版名稱' %}來調用.
  2. 若是想要在include子模版的時候,傳遞一些參數,那麼可使用with xxx=xxx的形式.示例代碼以下:
    {% include 'header.html' with user='yan' %}

模板繼承

在前端頁面開發中。有些代碼是須要重複使用的。這種狀況可使用include標籤來實現。也可使用另一個比較強大的方式來實現,那就是模版繼承。模版繼承相似於Python中的類,在父類中能夠先定義好一些變量和方法,而後在子類中實現。模版繼承也能夠在父模版中先定義好一些子模版須要用到的代碼,而後子模版直接繼承就能夠了。而且由於子模版確定有本身的不一樣代碼,所以能夠在父模版中定義一個block接口,而後子模版再去實現。如下是父模版的代碼:javascript

{% load static %}
<!DOCTYPE html>
<html lang="en">
<head>
<link rel="stylesheet" href="{% static 'style.css' %}" />
<title>{% block title %}個人站點{% endblock %}</title>
</head>

<body>
<div id="sidebar">
{% block sidebar %}
<ul>
<li><a href="/">首頁</a></li>
<li><a href="/blog/">博客</a></li>
</ul>
{% endblock %}
</div>
<div id="content">
{% block content %}{% endblock %}
</div>
</body>
</html>

這個模版,咱們取名叫作base.html,定義好一個簡單的html骨架,而後定義好兩個block接口,讓子模版來根據具體需求來實現。子模板而後經過extends標籤來實現,示例代碼以下:css

{% 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 }}來實現。html

在定義block的時候,除了在block開始的地方定義這個block的名字,還能夠在block結束的時候定義名字。好比{% block title %}{% endblock title %}。這在大型模版中顯得尤爲有用,能讓你快速的看到block包含在哪裏。前端

相關文章
相關標籤/搜索