NOTE

Jinja2提供了多种控制程序,可以用来改变模板的渲染流程。

1.在模板中使用条件控制语句:

templates/condition.html:

  1. {% if user %}
  2. Hello, {{ user }}!
  3. {% else %}
  4. Hello, Stranger!
  5. {% endif %}

hello.py:

  1. #!/usr/bin/env python
  2. from flask import Flask, render_template
  3. app = Flask(__name__)
  4. @app.route('/')
  5. def index():
  6. return render_template('condition.html')
  7. @app.route('/user/<name>')
  8. def user(name):
  9. return render_template('condition.html', user=name)
  10. if __name__ == '__main__':
  11. app.run(debug=True)

localhost:5000 :

  1. Hello, wasdns!

2.在模板中渲染一组元素:

  1. <ul>
  2. {% for comment in comments %}
  3. <li>{{ comment }}</li>
  4. {% endfor %}
  5. </ul>

3.宏,类似函数:

  1. {% macro render_comment(comment) %}
  2. <li>{{ comment }}</li>
  3. {% endmacro %}
  4. <ul>
  5. {% for comment in comments %}
  6. {{ render_comment(comment) }}
  7. {% endfor %}
  8. </ul>

也可以将宏单独放在一个文件中,然后导入:

macros.html:

  1. {% macro render_comment(comment) %}
  2. <li>{{ comment }}</li>
  3. {% endmacro %}

demo.html:

  1. {% import 'macros.html' as macros %}
  2. <ul>
  3. {% for comment in comments %}
  4. {{ render_comment(comment) }}
  5. {% endfor %}
  6. </ul>

4.继承:block标签定义的元素可以在衍生模板中进行修改。

base.html:

  1. <html>
  2. <head>
  3. {% block head %}
  4. <title>{% block title %}{% endblock %} - My Application</title>
  5. {% block end %}
  6. </head>
  7. <body>
  8. {% block body %}
  9. {% endblock %}
  10. </body>
  11. </html>

extend.html:

  1. {% extends "base.html "%}
  2. {% block title %}Index{% endblock %}
  3. {% block head %}
  4. {{ super() }}
  5. <style>
  6. </style>
  7. {% endblock %}
  8. {% block body %}
  9. <h1>Hello World!</h1>
  10. {% endblock %}

super() => 获取基模板中原有内容。

2017/2/19

Flask 6 模板2的更多相关文章

  1. Flask网页模板的入门

    #网页模板需要导入render_template from flask import Flask,render_template   方法一: #使用render_template模块来渲染模板文件 ...

  2. flask框架--模板

    今天又是一个精彩又无聊的一天,不过随着知识的缓慢的增加我的内心也充满了干劲,虽然前进的有些缓慢 但我不会这么容易放弃的,一定要相信自己,不要灰心 好了 ~ 不说废话了 , 我自己听的都有些受不了了 . ...

  3. Flask:Flask的模板系统和静态文件

    1.Flask模板系统 Django框架有自己独立的模板系统,而Flask是没有的,Flask默认采用jinjia2模板系统,jinjia2是仿写Django模板系统的一个第三方模块,但性能上要比Dj ...

  4. Flask 的模板渲染

    Flask 的模板渲染 渲染模板语言和django很像,都是用{{}},{%%} 注意点: 1 flask给模板传值,render_template("index.htm",use ...

  5. 2.Flask jinjia2模板

    1.1.模板传参 (1)主程序 from flask import Flask,render_template app = Flask(__name__) @app.route('/') def he ...

  6. 第四篇flask中模板语言 jinja2

    Flask中默认的模板语言是Jinja2 首先我们要在后端定义几个字符串,用于传递到前端 STUDENT = {, 'gender': '中'}, STUDENT_LIST = [ {, 'gende ...

  7. 二.Flask 学习模板

    Flask 为你配置 Jinja2 模板引擎.使用 render_template() 方法可以渲染模板,只需提供模板名称和需要作为参数传递给模板的变量就可简单执行. 至于模板渲染? 简单来说,就是将 ...

  8. Python——Flask框架——模板

    一.渲染模板 render_template 函数把Jinja2模板引擎集成到程序中 二.Jinja2变量过滤器 过滤器名 说明 safe 渲染值是不转义 capitalize 把值得首字母转换成大写 ...

  9. flask 在模板中渲染错误消息

    在模板中渲染错误消息 如果form.valicate_on_submit()返回False,说明验证没有通过,对于没有验证通过的字段,WTForms会把错误信息添加到表单类的errors属性中,这是一 ...

  10. flask 在模板中渲染表单

    在模板中渲染表单 为了能够在模板中渲染表单,我们需要把表单类实例传入模板.首先在视图函数里实例化表单类LoginForm,然后再render_template()函数中使用关键脑子参数form将表单实 ...

随机推荐

  1. Hibernate(1)——数据访问层的架构模式<转>

    数据库的概念.逻辑.数据模型概念 应用程序的分层体系结构发展 MVC设计模式与四层结构的对应关系 持久层的设计目标 数据映射器架构模式 JDBC的缺点 Hibernate简介 迅速使用Hibernat ...

  2. [SQL] MSSQL update 语句中的关联

    将tableA 表中的所有title 用tableB中的titlename 更新掉,如果tableB中存在对应的关系 update tableA as a set a.title = (select ...

  3. 【MySQL】为什么不要问我DB极限QPS/TPS

    为什么不要问我DB极限QPS/TPS 背景 相信很多开发都会有这个疑问,DB到底可以支撑多大的业务量,如何去评估?对于这个很专业的问题,DBA也没有办法直接告诉你,更多的都是靠经验提供一个看似靠谱的结 ...

  4. Oracle之rman命令的使用全备输出信息的详解(51CTO风哥rman课程)

    rman连接数据库 rman target/ catalog rman/rman123456 运行全备命令 backup database; 查看备份集 list backupset;

  5. saml,sso

    saml,sso centos version get:// cat /etc/redhat-release

  6. 设计模式之——Decorator模式

    Decorator模式又叫装饰者模式,这种模式是为了满足Java开发的"面向扩展开放,面向修改闭源"的开发原则设计出来的. 在装饰者模式中,不修改源类的代码,却能修改源类中方法的功 ...

  7. python设置redis过期时间

    import time import redis if __name__ == "__main__": try: conn=redis.StrictRedis(host='192. ...

  8. git-【六】分支的创建与合并

    在版本回填退里,已经知道,每次提交,Git都把它们串成一条时间线,这条时间线就是一个分支.截止到目前,只有一条时间线,在Git里,这个分支叫主分支,即master分支.HEAD严格来说不是指向提交,而 ...

  9. 使用Vue-cli搭建项目与目录详解

    1.介绍 vue-cli这个构建工具大大降低了webpack的使用难度,支持热重载,有webpack-dev-server的支持,相当于启动了一个请求服务器,给你搭建了一个测试环境,只关注开发就OK. ...

  10. PAT 1043 Is It a Binary Search Tree[二叉树][难]

    1043 Is It a Binary Search Tree(25 分) A Binary Search Tree (BST) is recursively defined as a binary ...