flask第二十三篇——模板【5】过滤器

过滤器——format格式化

flaskDemo.py

# coding: utf-8

from flask import Flask, render_template
import flask

app = Flask(__name__)  # type: Flask
app.debug = True

@app.route('/')
def login():
    context = {
        "user": {
            "name": "Warren",
            "age": 18,
            "gender": None,
            "comment": u'<script>alert("弹出框")</script>'}
    }    
    return render_template('index.html', **context)

if __name__ == '__main__':
    app.run()

index.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>过滤器</title>
</head>
<body>
    <p>绝对值:{{ user.age | abs }}</p>
    <p>默认值:{{ user.gender or 'male'}}</p>
    <p>转义:{{ user.comment }}</p>
    <p>格式化:{{ "姓名:%s,年龄:%s" | format(user.name, user.age) }}</p>
</body>
</html>

我们在html文件中通过format引用姓名和年龄的值,传到模板里,执行代码:

过滤器——last和first(最后一个值和第一个值)

修改context的内容如下:

context = {
    "user": {
        "name": "Warren",
        "age": 18,
        "gender": None,
        "comment": u'<script>alert("弹出框")</script>'},
    "subject": ["math", "Chinese", "biology"]
}

index.html文件增加:

<p>最后一个值:{{ subject | last }}</p>
<p>第一个值:{{ subject | first }}</p>

保存后刷新页面:

还有很多过滤器,下面船长把有必要知道的给大家列在下面的代码里,大家可以去试一下:

flaskDemo.py

# coding: utf-8

from flask import Flask, render_template
import flask

app = Flask(__name__)  # type: Flask
app.debug = True

@app.route('/')
def login():
    context = {
        "user": {
            "name": "Warren",
            "age": 18,
            "gender": None,
            "comment": u'<script>alert("弹出框")</script>'},
        "subject": ["math", "Chinese", "biology"],
        "num": '3',
        "upper": "I AM A MAN",
        "lower": "i am a boy",
        "repl": "A, A, A",
        "title": u'life is short, I choose Python',
        "space": " abc ",
        "tags": u"<p>这是一个HTML标签</p>"}
    return render_template('index.html', **context)

if __name__ == '__main__':
    app.run()

index.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>过滤器</title>
</head>
<body>
    <p>绝对值:{{ user.age | abs }}</p>
    <p>默认值:{{ user.gender or 'male'}}</p>
    <p>转义:{{ user.comment }}</p>
    <p>格式化:{{ "姓名:%s,年龄:%s" | format(user.name, user.age) }}</p>
    <p>最后一个值:{{ subject | last }}</p>
    <p>第一个值:{{ subject | first }}</p>
    <p>序列的长度:{{ subject | length }}</p>
    <p>拼接:{{ subject | join(', ') }}</p>
    <p>转换成整型:{{ num | int }}</p>
    <p>转换成小写:{{ upper | lower }}</p>
    <p>转换成小写:{{ lower | upper }}</p>
    <p>相同的全部替换:{{ repl | replace('A', 'HERO') }}</p>
    <p>只替换一个:{{ repl | replace('A', 'HERO', 1) }}</p>
    <p>截取字符串:{{ title | truncate(9) }}</p>
    <p>截断单词:{{ title | truncate(9, true) }}</p>
    <p>截取前后空格:{{ space | trim }}</p>
    <p>删除所有HTML标签:{{ tags | striptags }}</p>
</body>
</html>

执行代码:

原文发布于微信公众号 - 自动化测试实战(gh_839e78b6ba28)

原文发表时间:2018-04-06

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏coder修行路

python中常用的模块的总结

1、 模块和包 a.定义: 模块用来从逻辑上组织python代码(变量,函数,类,逻辑:实现一个功能),本质就是.py结尾的python文件。(例如:文件名:t...

36190
来自专栏Java开发者杂谈

JDK1.7新特性(3):java语言动态性之脚本语言API

简要描述:其实在jdk1.6中就引入了支持脚本语言的API。这使得java能够很轻松的调用其他脚本语言。具体API的使用参考下面的代码: 1 package...

312100
来自专栏zhisheng

Windows 64位下安装Redis超详细教程

Redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(...

437120
来自专栏北京马哥教育

Shell特殊变量和命令行参数详解

? 1.shell变量基础 shell变量是一种很“弱”的变量,默认情况下,一个变量保存一个串,shell不关心这个串是什么含义。 所以若要进行数学运算,必须...

42760
来自专栏前端达人

JavaScript基础——深入学习async/await

大家好,上周我们一起学习了《JavaScript基础——Promise使用指南》, 明白了ES6增加的新特性——Promise让我们能够更加优雅的书写回调函数,...

378170
来自专栏desperate633

设计模式之代理模式(Proxy模式)代理模式的引入代理模式的实例程序代理模式分析

Proxy是代理人的意思,指的是代替别人进行工作的人。当不一定需要本人亲自去做的工作的时候,就可以寻找代理人去完成。 但在代理模式中,往往是相反的,通常是代理...

10320
来自专栏软件开发 -- 分享 互助 成长

谈谈 char *num="123";和char num[4]="123";的区别

最近写程序的时候发现这样一个问题 #include<iostream> #include <string.h> using namespace std; vo...

22780
来自专栏落花落雨不落叶

杭电2016 数据的交换输出

373120
来自专栏重庆的技术分享区

AngularJs指令解密

17970
来自专栏Django中文社区

基类View

在 Class-based views 源码解析 #1 中我们从宏观层面讨论了 Django 类视图的类继承结构以及命名规律。接下来我们要深入各个具体的类视图,...

29450

扫码关注云+社区

领取腾讯云代金券