<!--base.html-->

<!DOCTYPE html>
<html lang="en">
<head>
<!--html中的包含关系-->
{% block head %}
{% include ['includes/_head.html', 'include/_metas.html'] %}
{% endblock head %}
</head>
<body> <!--页头-->
<header>{% block header %}{% endblock header %}</header> <!--block作用域问题,内层block调用外面的item-->
{% for item in items %}
<li>{% block loop_item scoped %}{{ item }}{% endblock loop_item %}</li>
{% endfor %} <!--页体-->
<div>{% block content %}{% endblock content %}</div> <!--页脚-->
<footer>
{% block footer %}
Copyright 2018 by <a href="www.baidu.com">Baidu</a>
{% endblock footer %}
</footer> </body>
</html> <!--index.html--> <!--继承父页面-->
{% extends 'base.html' %} <!--宏-->
{% macro input(name, value='', type='text', size=20) %}
<input type="{{ type }}" name="{{ name }}" value="{{ value }}" size="{{ size }}"/>
{% endmacro %} <!--宏引入-->
{% import '_marcos.html' as ui %} <!--title-->
{% block title %}{{ title }}{% endblock title %} <!--content-->
{% block content %}
{% set links=[
("home", url_for(".index")),
("about", url_for(".about")),
("service", url_for(".service")),
("project", url_for(".project")),
] %} <nav>
{% for label, href in links %}
{% if not loop.first %} | {% endif %}
<a href="{{ href }}">{{ label }}</a>
{% endfor %}
</nav> <!--重复使用变量-->
<h1>{{ self.title() }}</h1>
{{ input('username') }}
{{ input('password', type='password') }} {% endblock content %} <!--footer-->
{% block footer %}
<hr>
<!--改写父类方法,且不覆盖父类-->
{{ super() }}
{% endblock footer %}

jinja语法的更多相关文章

  1. jinja 语法 - 整型转字符串

    大多数 jinja 相关的问题,其实查文档就解决了,但后来遇到这个问题,使得我把 jinja 官方文档,api.样例等,认真读了个遍= =. 发现没有直接的办法可以将整型转为字符串,对于需要进行字符串 ...

  2. Python之路【第十五篇】WEB框架

    WEB框架本质 Python的WEB框架分为两类: 1.自己写socket,自己处理请求 2.基于wsgi(Web Server Gateway Interface WEB服务网关接口),自己处理请求 ...

  3. 22.python笔记之web框架

    一.web框架本质 1.基于socket,自己处理请求 #!/usr/bin/env python3 #coding:utf8 import socket def handle_request(cli ...

  4. saltstack实战3--配置管理之pillar

    数据系统-Pillar pillar和grains类似,但是它能给minion指定它想要的数据,安全性较好,另外它是在master端设置的   应用场景: grains的特性–每次启动汇报.静态决定了 ...

  5. web框架python

    22.python笔记之web框架   一.web框架本质 1.基于socket,自己处理请求 #!/usr/bin/env python3 #coding:utf8 import socket de ...

  6. Ansible详解(二)

    Ansible系列命令 Ansible系列命令有如下: ansible:这个命令是日常工作中使用率非常高的命令之一,主要用于临时一次性操作: ansible-doc:是Ansible模块文档说明,针对 ...

  7. 【Saltstack】Saltstack简单说明

    [Saltstack] Saltstack是一个服务器集中管理中心平台,可以帮助管理员轻松的对若干台服务器进行统一操作.类似的工具还有Ansible,Puppet,func等等.相比于这些工具,sal ...

  8. python学习之路web框架

    WEB框架的本质 python的WEB框架分为两大类: 1.自己写socket,自己处理请求 2.基于wsgi(Web Server Gateway Interface WEB服务网关接口),自己处理 ...

  9. python中前后端通信方法Ajax和ORM映射(form表单提交)

    后端从数据库获取数据给到前端: 第一种方式: admin.py文件代码: @admin.route('/showList') def show(): # 获取数据库所有文章数据,得到一个个对象 res ...

随机推荐

  1. 巧用style的另类写法

    看到style,不少人可能会说这个我知道,就是控件写属性的话可以通过style来实现代码的复用,单独把这些属性及其参数写成style就可以便捷的调用. <?xml version="1 ...

  2. animation过渡效果

    References: http://developer.android.com/training/animation/index.html http://developer.android.com/ ...

  3. 如何能够通过代码来重启Android手机?

    String cmd = "su -c reboot";//让手机从启 try { Runtime.getRuntime().exec(cmd); } catch (IOExcep ...

  4. 第三百八十五节,Django+Xadmin打造上线标准的在线教育平台—登录功能实现,回填数据以及错误提示html

    第三百八十五节,Django+Xadmin打造上线标准的在线教育平台—登录功能实现 1,配置登录路由 from django.conf.urls import url, include # 导入dja ...

  5. 使用Maven模板创建项目

    在本教程中,我们将向你展示如何使用mvn archetype:generate从现有的Maven模板列表中生成项目.在Maven 3.3.3,有超过1000+个模板,Maven 团队已经过滤掉一些无用 ...

  6. MySql 存储过程总结

    MySql 存储过程 -- ---------------------------- -- Procedure structure for `proc_adder` -- -------------- ...

  7. linux 下 vi 文本编辑如何复制一行粘贴删除一行数据

    在使用vi有时会想直接复制一行数据,然后粘贴一行或者直接删除一行数据 复制一行数据的方法 把光标放到要复制的一行前面,然后按两下yy字母键 然后把光标放到要复制到的地方去,按键盘的p字母键 删除一行是 ...

  8. Linux目录和文件管理

    今天我们来介绍一下对于Linux系统“命令“的理解和分类以及常用的目录文件管理命令的使用. 一. 命令 用于实现某一类功能的指令或程序,命令的执行依赖于解释器程序(例如:/bin/bash) 分类 内 ...

  9. logstash 主题综合篇

    一.[logstash-input-file]插件使用详解(配置) logstash input 监听多个目标文件. 二.Logstash Reference(官方参数配置说明)

  10. iOS: block参数

    先看一下 NSArray 是怎么传递 block 参数的 ... @interface NSArray (NSExtendedArray) … #if NS_BLOCKS_AVAILABLE - (v ...