模板代码的复用: 宏 继承 包含

当多个模板具有相同的顶部/底部内容/部分内容时,可以使用这三者来实现

宏是一个函数, 返回一个模板或者html字符串

  • 定义宏
{% macro input(name,value=‘‘,type=‘text‘) %}
    <input type="{{type}}" name="{{name}}"
        value="{{value}}" class="form-control">
{% endmacro %}
  • 调用宏
{{ input(‘name‘ value=‘zs‘)}}继承: 重用模板公共内容 :
{% block top %} {% endblock %}
  • 不支持多继承
  • 为了便于阅读,在子模板中使用extends时,尽量写在模板的第一行。
  • 不能在一个模板文件中定义多个相同名字的block标签。
  • 当在页面中使用多个block标签时,建议给结束标签起个名字,当多个block嵌套时,阅读性更好。

包含: 将另一个模板整个加载到当前模板中,并直接渲染。

  • include的使用
{% include ‘hello.html‘ %}

包含在使用时,如果包含的模板文件不存在时,程序会抛出TemplateNotFound异常,可以加上 ignore missing 关键字。如果包含的模板文件不存在,会忽略这条include语句。

  • include 的使用加上关键字ignore missing
{% include ‘hello.html‘ ignore missing %}
  • 宏(Macro)、继承(Block)、包含(include)均能实现代码的复用。
  • 继承(Block)的本质是代码替换,一般用来实现多个页面中重复不变的区域。
  • 宏(Macro)的功能类似函数,可以传入参数,需要定义、调用。
  • 包含(include)是直接将目标模板文件整个渲染出来

原文地址:https://www.cnblogs.com/zxt-cn/p/9126829.html

时间: 2024-07-30 19:04:19

模板代码的复用: 宏 继承 包含的相关文章

Flask基础(14)--&gt;模板代码的复用【宏(Macro)、继承(Block)、包含(include)】

宏 对宏(macro)的理解: 把它看作 Jinja2 中的一个函数,它会返回一个模板或者 HTML 字符串 为了避免反复地编写同样的模板代码,出现代码冗余,可以把他们写成函数以进行重用 需要在多处重复使用的模板代码片段可以写入单独的文件,再包含在所有模板中,以避免重复 定义宏 {% macro input(name,value='',type='text') %} <input type="{{type}}" name="{{name}}" value=&q

模板代码 - 列表和下拉刷新

*:first-child { margin-top: 0 !important; } body>*:last-child { margin-bottom: 0 !important; } /* BLOCKS =============================================================================*/ p, blockquote, ul, ol, dl, table, pre { margin: 15px 0; } /* HEAD

freemarker实现通用布局的模板拆分与复用

原文:http://www.hawu.me/coding/733 一.基础页面布局 假设我们项目页面的通用布局如下图所示: 实现这样的布局的基本html代码如下: XHTML 1 2 3 4 5 6 7 8 9 10 11 12 13 14 <html> <head> </head> <body> <div style="width: 700px; text-align:center; font-size:30px;"> &l

在实际项目中实现把swf资源里面的MC进行转化成按钮,实现代码的复用

下面是前不久一个游戏项目中的一小部分内容,拿出来只是为了说明,用AS3对加载进程序中swf内容进行封装变换处理 下面是这个例子,只不过不完整... package com.ctrlcc.sanguo.view { /** * C-公会转盘-视图-主视图 */ public class ZhuanPanView extends Window { private var _panel:MovieClip; private var _closeBtn:EButton; private var _buy

窗体的复用----窗体继承

众所周知,在面向对象的软件开发中,通过对类的封装和抽象,可以对类进行继承,从而实现代码复用和增加软件的可维护性.那么,窗体能不能继承呢?在重构机房收费系统的时候遇到了如下问题: 相似的几个功能,窗体布局一模一样,如果使用以前的方法,只能复制.粘贴这些窗体和控件,可是,控件可以复制,名字却不能复制:如果改其中的一项数据的话,需要修改好几个窗体,可维护性差:U层.B层.D层代码相似度很高,代码复用性太低等等.怎么解决这些问题呢? 类可以进行抽象.封装,然后可以继承以复用,窗体能不能看做一个特殊的类?

模板引擎使用详解:包含公共模板

ThinkPHP内置了一个基于XML的编译型模板引擎,本篇开始对其内置的标签做深入的讲解,如果你使用的是Smarty等第三方模板引擎,请忽略. 变量的输出我们已经在快速入门的变量输出中做了详细的描述,后面主要讲解变量的输出判断.循环和控制,以及包含公共模板和资源文件等. 包含公共模板 [-more-] include标签 使用include标签在当前模板中包含公共模板,例如常见的header和footer等公共模板,include标签最常用的属性是file,但是支持不同的用法,其用法基本和我们常

结对编程-OR &amp; Creddit对个人项目代码的复用与扩展

项目题目: 用户: 小学.初中和高中学生. 功能: 1.用户注册功能.用户提供手机号码,点击注册将收到一个注册码,用户可使用该注册码完成注册: 2.用户完成注册后,界面提示设置密码,用户输入两次密码匹配后设置密码成功.密码6-10位,必须含大小写字母和数字.用户在登录状态下可修改密码,输入正确的原密码,再输入两次相同的新密码后修改密码成功: 3.密码设置成功后,跳转到选择界面,界面显示小学.初中和高中三个选项,用户点击其中之一后,提示用户输入需要生成的题目数量: 4.用户输入题目数量后,生成一张

KMP算法的定义及KMP练手题 HDU 1711 Number Sequence (我的模板代码)

题意:就是要你来找出b数组在a数组中最先匹配的位置,如果没有则输出-1 思路:直接KMP算法(算法具体思想这位牛写的不错http://blog.csdn.net/v_july_v/article/details/7041827) AC代码: #include<cstdio> #include<cstring> #include<stdlib.h> #include<iostream> using namespace std; #define maxn 100

inputstream和outputstream读写数据模板代码

//读写数据模板代码 byte buffer[] = new byte[1024]; int len=0; while((len=in.read(buffer))>0){ out.write(buffer,0,len); }