19Jinja2中宏定义
1 @app.route('/')
2 def hello_world():
3 return render_template('index.html')
4
5
6 {% macro input(name="",value="",type="text") %}
7 <input type="{{ type }}" name="{{ name }}" value="{{ value }}">
8 {% endmacro %}
9
10 <h1>Jinja2宏</h1>
11 <table>
12 <tbody>
13 <tr>
14 <td>用户名:</td>
15 <td>{{ input('username') }}</td>
16 </tr>
17 <tr>
18 <td>密码:</td>
19 <td>{{ input('username',type="password") }}</td>
20 </tr>
21 <tr>
22 <td></td>
23 <td>{{ input('username',type="submit",value="提交") }}</td>
24 </tr>
25 </tbody>
26 </table>
以上是基本的宏定义方法。
一,导入宏
如果把宏写到其他的html代码中,那么只需要这样引入。
在html中第一行输入:
1, {% from 'macro.html' import input %}
2, {% from 'macro.html' import input as 别名 %}
使用别名后记得把input也改为别名。
3, {% import 'macro.html' as 别名 %}
这里是导入了macro.html这个文件且去了别名,使用的时候为:
别名.input

二,include
作用:每个网页中共同的部分,只写一次,然后引用它。
语法:{% include header.html%}
示例:
{% include header.html%}
content
{% include footer.html%}

三,set和with
使用set语句定义变量。
语法:{% set user =''知了'' %},一旦定义了这个变量,那么在后面的代码中都可以使用这个变量。
示例:
{% set user =''知了'' %}
用户名:{{ user }}
with的用法:只能作用在代码块中,他是带endwidth的。
{% with user =''知了'' %}
用户名:{{ user }}
{% endwith %}
还有一种with和set结合的用法:
{% with %}
{% set classroom = "知了" %}
<p> {{ classroom }} </p>
{% endwidth %}
这样就能够做到把set限定在代码块而非整个文件中。
19Jinja2中宏定义的更多相关文章
- C语言中宏定义(#define)时do{}while(0)的价值(转)
C语言中宏定义(#define)时do{}while(0)的价值 最近在新公司的代码中发现到处用到do{...}while(0),google了一下,发现Stack Overflow上早有很多讨论,总 ...
- c 语言中宏定义和定义全局变量的区别
宏定义和定义全局变量的区别: 1 作用时间不同. 宏定义在编译期间即会使用并替换,而全局变量要到运行时才可以. 2 本质类型不同. 宏定义的只是一段字符,在编译的时候被替换到引用的位置.在运行中是没有 ...
- ATL中宏定义offsetofclass的分析
近日学习ATL,通过对宏定义offsetofclass的解惑过程.顺便分析下虚函数表,以及通过虚函数表调用函数的问题. 1 解开ATL中宏定义offsetofclass的疑惑 #define _ATL ...
- C语言中宏定义(#define)时do{}while(0)的价值
最近在新公司的代码中发现到处用到do{...}while(0),google了一下,发现Stack Overflow上早有很多讨论,总结了一下讨论,加上自己的理解,do{...}while(0)的价值 ...
- c/c++中宏定义##连接符 和#符的使用
C语言中如何使用宏C(和C++)中的宏(Macro)属于编译器预处理的范畴,属于编译期概念(而非运行期概念).下面对常遇到的宏的使用问题做了简单总结.关于#和##在C语言的宏中,#的功能是将其后面的宏 ...
- c语言中宏定义和常量定义的区别
他们有共同的好处就是"一改全改,避免输入错误"哪两者有不同之处吗?有的. 主要区别就在于,宏定义是在编译之前进行的,而const是在编译阶段处理的 宏定义不占用内存单元而const ...
- C语言中宏定义与C++中的内联函数
一,宏定义:在预处理的时候把宏定义的内容替换到代码中,正常编译. 1,无参数宏定义和有参数宏定义 (1)宏定义不能加分号,比如:#define PI 3.24;错的,#define PI 3.24 ...
- Makefile中宏定义
实际上是gcc命令支持-D宏定义,相当于C中的全局#define: gcc -D name gcc -D name=definition Makefile中可以定义变量(和宏很像),但是是给make解 ...
- c语言中宏定义#和 ##的作用:
转载:http://www.cnblogs.com/cyttina/archive/2013/05/11/3072969.html 看了这篇文章后了解了,但是文章中的例子比较特别,我在这里加个注释好了 ...
随机推荐
- Linux系统常用API总结
1.错误处理 - fprintf() - perror() 2.通用I/O模型 - fd = open(pathname, flags, mode) - numread = read(fd, buff ...
- 【源码项目+解析】C语言/C++开发,打造一个小项目扫雷小游戏!
一直说写个几百行的小项目,于是我写了一个控制台的扫雷,没有想到精简完了代码才200行左右,不过考虑到这是我精简过后的,浓缩才是精华嘛,我就发出来大家一起学习啦,看到程序跑起来能玩,感觉还是蛮有成就感的 ...
- 阅读-Calibre Library转PDF、EPUB配置
提示:如果想恢复默认设置,点击"恢复默认值"即可 -----EPUB (MOBI同理)----- 目标:解决转换过程中图片清晰度丢失问题(分辨率太低) 右击-转换书籍-逐个转换 输 ...
- Golang 随机生成中国人姓名
package main import ( "fmt" "math/rand" "time" ) var lastName = []stri ...
- linux(centos8):centos8.1安装(详细过程/图解)(vmware fusion/CentOS-8.1.1911-x86_64)
一,centos是什么? CentOS(Community Enterprise Operating System,中文意思是社区企业操作系统)是Linux发行版之一, 它是来自于Red Hat En ...
- centos8安装redis
一,下载: 1,下载页面: https://redis.io/ 2,下载 [root@localhost source]# wget http://download.redis.io/releases ...
- lumen发送邮件配置
composer.json 增加 "illuminate/mail":"5.6"composer update -vvvconfig 目录新建mail.php ...
- PHPStorm注释缩进问题
以下是让强迫症很难受的注释格式 以下几步即可解决强迫症的烦恼 1.点击File 2.点击setting 3.按照以下几步走 4.按照以下几步走 5.最后效果如下
- Vue.js 3.0搭配.NET Core写一个牛B的文件上传组件
在开发Web应用程序中,文件上传是经常用到的一个功能. 在Jquery时代,做上传功能,一般找jQuery插件就够了,很少有人去探究上传文件插件到底是怎么做的. 简单列一下我们要做的技术点和功能点 使 ...
- 在嵌入式设备中实现webrtc的第三种方式①
最近两年,我对于网络知识,包括底层协议学习比较多,webrtc这种几乎是使用到了所有层面网络协议的技术也逐渐进入我的视野. 之前我提出了两种在嵌入式设备上实现webrtc的方式,一是用官方代码,然后改 ...