Flask Jinja2模板
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模板相关推荐
- Flask Jinja2 模板中的变量和过滤器
Flask Jinja2 模板中的变量和过滤器 Flask 可以在视图函数中返回模板文件,模板引擎默认使用的是 Jinja2 . 通常,返回的 Jinja2 模板文件并不是一个静态的页面,而是同时有静 ...
- Flask Jinja2模板引擎
模板 在前面的示例中,视图函数的主要作用是生成请求的响应,这是最简单的请求.实际上,视图函数有两个作用:处理业务逻辑和返回响应内容.在大型应用中,把业务逻辑和表现内容放在一起,会增加代码的复杂度和维护 ...
- jinja2模板注入_Flask jinja2 模板注入思路总结
Flask jinja2 模板注入思路总结 前言 虽然这个漏洞已经出现很久了, 不过偶尔还是能够看到翻了翻 freebuf 上好像只有 python2 的一些 payload, 方法也不是很全我找来找 ...
- 【Flask】Jinja2模板的使用及控制语句
Jinja2模板 在前面的实例中,视图函数的主要作用是生成请求的响应,这是最简单请求.实际上,视图函数有两个作用: 处理业务逻辑 返回响应内容 在大型应用中,把业务逻辑和表现内容放在一起,会增加代码的 ...
- 如何查看jinja2模板的上級_如何使用Python的Flask和谷歌app Engine来构建一个web app...
前言 如果您想在很短的时间内使用Python构建web应用程序,那么Flask是一个非常好的选择.Flask是一个小而强大的web框架.它也很容易学习和简单的代码. 在本教程中,我将向您展示如何使用A ...
- flask基础之jinja2模板-语法定义
懂得MVC的人都知道,模型.视图.控制,下面要要介绍的jinja就是视图层的一个渲染模板,类似于jsp,下面来学习 一.jinja2基本语法 jinja2模板可以保存在任何基于文本的文件中,比如XML ...
- Flask mysql 模版传参_Flask渲染Jinja2模板和传参
### Flask渲染Jinja2模板和传参: 1. 如何渲染模板: * 模板放在`templates`文件夹下 * 从`flask`中导入`render_template`函数. * 在视图函数中, ...
- Web框架——Flask系列之Jinja2模板引擎(二)
Jinja2模板引擎简介 一.Jinja2模板概述 用来展示数据的html页面,这个过程也通常称为渲染,属于Jinja2的功能 使用模板的好处: 视图函数只负责业务逻辑和数据处理(业务逻辑方面) 而模 ...
- Flask 中的Jinja2模板引擎
Flask 中的Jinja2模板引擎 在 Web 项目中,前端的显示效果是通过 HTML 语言来实现的,后端的视图函数将数据或模板文件返回给前端. 前端接收到后端返回的结果后,需要通过模板引擎来渲染页 ...
最新文章
- 计算机c盘知识,为什么电脑系统盘叫C盘而不是A或B盘?
- Rtx userlist.php,【图片】【C语言】【控制台】提取腾讯通用户信息(id,用户名,手机)【erbi_lucifer吧】_百度贴吧...
- C# Winform中慎用Application.DoEvents
- 云栖专辑 | 阿里开发者们的第4个感悟:自驱是最好的进步方式
- 一、K3 WISE 实施顾问教程《进度1-谈谈实施顾问》
- MySQL数据库介绍
- mySQL 2008安装MOF无法连接_安装SQL2008R2时提示:MOF编译器无法连接WMI服务器?
- 手提无法使用Ghost方法安装win7系统,出现一直显示DOS工具箱和硬盘无效情况的解决
- 常见电脑故障处理方法
- 【原创】新韭菜日记20---在国内股市亏钱的最大原因就是杠杆和割肉
- java constants_Java Constants类代码示例
- 六、向量的夹角公式及R3中平面的一般形式
- hexo+yilia添加复制代码块的功能
- 平面设计基础学习-1
- 商汤研究院基础视觉组正式员工(校招/社招)实习生长期招聘
- 大于2TB的卷的知识.主要关于windows, EFI,GPT
- 报错:v-html will override element children 解决方法
- unity防反编译 windows平台加密dll
- 如何从 Github 中删除提交
- 原生JavaScript实现打字游戏
热门文章
- Python使用集合实现素数筛选法
- Python使用numpy滤除图像中的低频信号
- 详解Python类定义中的各种方法
- 主板检测卡c5_检测升级 | 华北工控推出机器视觉检测系统计算机产品方案
- Computer Vision News
- 怎么拆除境地柜_内衣不合身拒绝接亲,精装房装修不满意怎么办?
- 标准C语言只有,只有Visual C++集成开发环境,可以编译标准C语言程序。
- java计算器算法描述_基于Java的计算器算法(源代码)
- mac学python_新手小白学Python必备编程利器Pycharm快捷键大全(Win+Mac)
- php网站渗透实战_【案例分析】记一次综合靶场实战渗透