jinjia 基础语法


for in

{% for i in list %}
{% endfor %}
{% for k,v in dict.items() %}
{% endfor %}

if else

{% if i=1 %}
    {{ i }}
{% elif i!=1 %}
    {{ i }}
{% else %}
    {{ i }}
{% endif %}

with

{% with data %} 
{% endwith %}

url_for

<form class="form-inline" action="{{ url_for('web.search') }}" method="get">

filename

<link rel="stylesheet" href="{{ url_for('static', filename='css/personal.css')}}">

get_flashed_messages

{% set messages = get_flashed_messages() %} # 得到flash 
    {{ message }}
{% set messages = get_flashed_messages(with_categories=true, category_filter=["message"]) %} # 得到flash 
    {{ message }}

管道命令 隐式接收

字符串操作

safe:禁用转义

<p>{{ 'hello' | capitalize }}</p>

capitalize:把变量值的首字母转成大写,其余字母转小写

<p>{{ 'hello' | capitalize }}</p>

lower:把值转成小写

<p>{{ 'HELLO' | lower }}</p>

upper:把值转成大写

<p>{{ 'hello' | upper }}</p>

title:把值中的每个单词的首字母都转成大写

<p>{{ 'hello' | title }}</p>

reverse:字符串反转

<p>{{ 'olleh' | reverse }}</p>

format:格式化输出

<p>{{ '%s is %d' | format('name',17) }}</p>

striptags:渲染之前把值中所有的HTML标签都删掉

<p>{{ '<em>hello</em>' | striptags }}</p>

truncate: 字符串截断

<p>{{ 'hello every one' | truncate(9)}}</p>

列表操作

first:取第一个元素

<p>{{ [1,2,3,4,5,6] | first }}</p>

last:取最后一个元素

<p>{{ [1,2,3,4,5,6] | last }}</p>

length:获取列表长度

<p>{{ [1,2,3,4,5,6] | length }}</p>

sum:列表求和

<p>{{ [1,2,3,4,5,6] | sum }}</p>

sort:列表排序

<p>{{ [6,2,3,1,5,4] | sort }}</p>

自定义过滤器

# -*- coding:utf-8 -*-
__author__ = 'guoqianqian'


from flask import Flask
from flask_script import Manager
from flask import render_template


app = Flask(__name__)
manager = Manager(app)


def mylen(arg):#实现一个可以求长度的函数
    return len(arg)


# 该函数实现给定一个区间返回区间的内容
def interval(test_str, start, end):#过滤器中传递多个参数,第一个参数为被过滤的内容,第二第三个参数需要自己传入
    return test_str[int(start):int(end)]


env = app.jinja_env
env.filters['mylen'] = mylen#注册自定义过滤器
env.filters['interval'] = interval#注册自定义过滤器


@app.route("/")
def index():
    test_str = "hello"
    return render_template("index.html", test_str=test_str)


if __name__ == "__main__":
    manager.run()

第二种方法

@app.template_filter("listreverse")
def do_listreverse(li):
    li.reverse()
    return li