Flask Jinja2模板

Jinja 模板

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

过滤器

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

过滤器解释例子结果
default如果变量是None则返回默认值{{ vardefault(‘str’) }}
escape把HTML标签转义{{ “name”escape }}
safe与escape相反,不转义HTML
float以浮点数显示{{ 10float }}
init以整形显示{{ 10.1int }}
join拼贴字符串{{ [‘a’,’b’]join(‘,’) }}
lengthlen(){{ “ab”length }}
round四舍五入(common,floor,ceil){{ 10.11round(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') }} 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值