Jinja 模板

模板语言(templationg language)中会把变量传递给模板。在Jinja中变量名是由变量代码块(variable block){{}}来表示的,另外还有控制代码块(control block){% %}

过滤器

因为很多python的函数在jinjia中不可以使用,所以jinjia中有很多内建的函数
内置过滤器

过滤器 解释 例子 结果
default 如果变量是None则返回默认值 {{ var default(‘str’) }}
escape 把HTML标签转义 {{ “name” escape }}
safe 与escape相反,不转义HTML
float 以浮点数显示 {{ 10 float }}
init 以整形显示 {{ 10.1 int }}
join 拼贴字符串 {{ [‘a’,’b’] join(‘,’) }}
length len() {{ “ab” length }}
round 四舍五入(common,floor,ceil) {{ 10.11 round(1, “common”) }}
title 大写首字母 {{ “name is” title }}
tojson 转化为json
truncate 截断字符串,并添加省略号 {{ “aaaaaaaaaa” truncate(4) }}

自定义过滤器
在mian函数中定义相关的函数,并添加到jinja_env对象的filter字典中

注释

{# #}中的代码不会被渲染

渲染模板

from flask import Flask, render_template
@app.route('/user/<name>')
def user(name):return render_template('user.html', name=name)
名,之后的都是键值对,表示传入模板的变量

模板传参

1.模板参数
直接嵌套在html里面,传入的是该路由定义方法里面的参数

{{ argv }}

模板变量过滤器

过滤器的最大作用就是处理含有标签的字符串,jinja2会转义所有的变量,比如\

{% if title %}
...
{% else %}
...
{% endif %}
...

过滤器也可以同if语句一起使用

{% if str | length >0 %}
{% endif %}

3.循环语句

{% for name in names %}
...
{% endfor %}

循环也可以同if语句一起使用

{% for name in names if name | length >0 %}
...
{% endfor %}

loop
loop是在循环中的一个特殊变量,可以查看循环的相关信息

{% for name in names %}{{ loop.index }}. {{name}} #显示迭代次数
{% endfor %}
变量 描述
loop.index 当前迭代序号,从1开始
loop.index0 当前迭代序号,从0开始
loop.revindex 当前迭代逆序号,从1开始
loop.revindex0 当前迭代逆序号,从0开始
loop.first 如果是第1个,则返回True
loop.last 如果是最后1个,返回True
loop.length 返回迭代器的长度
loop.cycle 迭代辅助函数
loop.depth 递归循环的深度,从1开始
loop.depth0 递归循环的深度,从0开始

4.模板继承
被继承模板中标明继承模板的插入位置

{% block content %}{% endblock %}

例子:

<html><head></head><body><a href="/index">hr下面是继承的插入位置</a><hr>{% block content %}{% endblock %}</body>
</html>

在继承文件中标明要继承的对象

{% extends "继承的对象" %}
{% block content %}
继承的内容
{% endblock %}

5.导入模板代码

{% include 'common.html' %}

6.函数

{% macro render_comment(comment) %} # 定义一个函数这里macro相当于def
<li>{{ comment }}</li>
{% endmacro %}

也可以做成一个包在其他地方导入

{% import 'macros.html' as macros %}

7.Flask特有的变量

{{ config.SQLALCHEMY_DATABASE_URI }} # config
{{ request.url }} # request
{{ session.new }} # session
{{ url_for('index') }} 

Flask Jinja2模板相关推荐

  1. Flask Jinja2 模板中的变量和过滤器

    Flask Jinja2 模板中的变量和过滤器 Flask 可以在视图函数中返回模板文件,模板引擎默认使用的是 Jinja2 . 通常,返回的 Jinja2 模板文件并不是一个静态的页面,而是同时有静 ...

  2. Flask Jinja2模板引擎

    模板 在前面的示例中,视图函数的主要作用是生成请求的响应,这是最简单的请求.实际上,视图函数有两个作用:处理业务逻辑和返回响应内容.在大型应用中,把业务逻辑和表现内容放在一起,会增加代码的复杂度和维护 ...

  3. jinja2模板注入_Flask jinja2 模板注入思路总结

    Flask jinja2 模板注入思路总结 前言 虽然这个漏洞已经出现很久了, 不过偶尔还是能够看到翻了翻 freebuf 上好像只有 python2 的一些 payload, 方法也不是很全我找来找 ...

  4. 【Flask】Jinja2模板的使用及控制语句

    Jinja2模板 在前面的实例中,视图函数的主要作用是生成请求的响应,这是最简单请求.实际上,视图函数有两个作用: 处理业务逻辑 返回响应内容 在大型应用中,把业务逻辑和表现内容放在一起,会增加代码的 ...

  5. 如何查看jinja2模板的上級_如何使用Python的Flask和谷歌app Engine来构建一个web app...

    前言 如果您想在很短的时间内使用Python构建web应用程序,那么Flask是一个非常好的选择.Flask是一个小而强大的web框架.它也很容易学习和简单的代码. 在本教程中,我将向您展示如何使用A ...

  6. flask基础之jinja2模板-语法定义

    懂得MVC的人都知道,模型.视图.控制,下面要要介绍的jinja就是视图层的一个渲染模板,类似于jsp,下面来学习 一.jinja2基本语法 jinja2模板可以保存在任何基于文本的文件中,比如XML ...

  7. Flask mysql 模版传参_Flask渲染Jinja2模板和传参

    ### Flask渲染Jinja2模板和传参: 1. 如何渲染模板: * 模板放在`templates`文件夹下 * 从`flask`中导入`render_template`函数. * 在视图函数中, ...

  8. Web框架——Flask系列之Jinja2模板引擎(二)

    Jinja2模板引擎简介 一.Jinja2模板概述 用来展示数据的html页面,这个过程也通常称为渲染,属于Jinja2的功能 使用模板的好处: 视图函数只负责业务逻辑和数据处理(业务逻辑方面) 而模 ...

  9. Flask 中的Jinja2模板引擎

    Flask 中的Jinja2模板引擎 在 Web 项目中,前端的显示效果是通过 HTML 语言来实现的,后端的视图函数将数据或模板文件返回给前端. 前端接收到后端返回的结果后,需要通过模板引擎来渲染页 ...

最新文章

  1. 计算机c盘知识,为什么电脑系统盘叫C盘而不是A或B盘?
  2. Rtx userlist.php,【图片】【C语言】【控制台】提取腾讯通用户信息(id,用户名,手机)【erbi_lucifer吧】_百度贴吧...
  3. C# Winform中慎用Application.DoEvents
  4. 云栖专辑 | 阿里开发者们的第4个感悟:自驱是最好的进步方式
  5. 一、K3 WISE 实施顾问教程《进度1-谈谈实施顾问》
  6. MySQL数据库介绍
  7. mySQL 2008安装MOF无法连接_安装SQL2008R2时提示:MOF编译器无法连接WMI服务器?
  8. 手提无法使用Ghost方法安装win7系统,出现一直显示DOS工具箱和硬盘无效情况的解决
  9. 常见电脑故障处理方法
  10. 【原创】新韭菜日记20---在国内股市亏钱的最大原因就是杠杆和割肉
  11. java constants_Java Constants类代码示例
  12. 六、向量的夹角公式及R3中平面的一般形式
  13. hexo+yilia添加复制代码块的功能
  14. 平面设计基础学习-1
  15. 商汤研究院基础视觉组正式员工(校招/社招)实习生长期招聘
  16. 大于2TB的卷的知识.主要关于windows, EFI,GPT
  17. 报错:v-html will override element children 解决方法
  18. unity防反编译 windows平台加密dll
  19. 如何从 Github 中删除提交
  20. 原生JavaScript实现打字游戏

热门文章

  1. Python使用集合实现素数筛选法
  2. Python使用numpy滤除图像中的低频信号
  3. 详解Python类定义中的各种方法
  4. 主板检测卡c5_检测升级 | 华北工控推出机器视觉检测系统计算机产品方案
  5. Computer Vision News
  6. 怎么拆除境地柜_内衣不合身拒绝接亲,精装房装修不满意怎么办?
  7. 标准C语言只有,只有Visual C++集成开发环境,可以编译标准C语言程序。
  8. java计算器算法描述_基于Java的计算器算法(源代码)
  9. mac学python_新手小白学Python必备编程利器Pycharm快捷键大全(Win+Mac)
  10. php网站渗透实战_【案例分析】记一次综合靶场实战渗透