Flask(jinja2)——过滤器的使用

一、前置问题

1、什么是过滤器?

        在Jinja2模板引擎中,过滤器是一种特殊的功能,用于修改变量的输出,从而转换或处理模板中的数据显示。

2、过滤器能干什么?

        变量可以通过 过滤器 修改。过滤器与变量用管道符号( | )分割,并且也 可以用圆括号传递可选参数。多个过滤器可以链式调用,前一个过滤器的输出会被作为后一个过滤器的输入。

二、实际运用(计算字符串的长度)

例如 {{ user.username|length }}用于获取用户用户名的长度。。过滤器接受带圆括号的参数,如同函数调用。例{{ list|join(', ') }} 这个例子会把一个列表用逗号连接起来 。

1、app.py

from flask import Flask, render_template

app = Flask(__name__)

class User:
    def __init__(self, username, email):
        self.username = username
        self.email = email

@app.route("/filter")
def filter_demo():
    user = User(username="小陈", email="xiaochen@qq.com")
    return render_template("filter.html", user=user)

2、filter.html

<div>{{ user.username }}-{{ user.username|length }}</div>

 3、运行结果

三、自定义过滤器 

1、app.py

from flask import Flask, render_template
from datetime import datetime

app = Flask(__name__)


# 自定义过滤器
def datetime_format(value, format="%Y年%m月%d日 %H:%M"):
    return value.strftime(format)


# 首先,定义一个名为datetime_format的函数,该函数接受一个datetime对象作为参数,并返回一个格式化的字符串。
# 然后,在Flask应用中使用app.add_template_filter()方法将datetime_format函数注册为名为"dformat"的模板过滤器。
app.add_template_filter(datetime_format, "dformat")


class User:
    def __init__(self, username, email):
        self.username = username
        self.email = email


@app.route("/filter")
def filter_demo():
    user = User(username="小陈", email="xiaochen@qq.com")
    now_time = datetime.now()
    return render_template("filter.html", user=user, now_time=now_time)

 2、filter.html

<div>{{ now_time|dformat }}</div>

3、运行结果

四、jinja2内置过滤器清单

了解更多过滤器功能,访问下方地址👇

jinja2中文官方文档网址:模板设计者文档 — Jinja2 2.7 documentation

 

 下一章节:Flask(jinja2)——控制语句-CSDN博客

上一章节:Flask(Jinja2)——模板访问对象属性-CSDN博客 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小陈从不熬夜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值