{% include '模版名称' %}
来调用.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
包含在哪里。前端