python测试开发django-69.templates模板过滤器filter

前言

templates 模板里面过滤器 filter 的作用是对变量的出来,比如小写转大写,替换一些特殊字符,对列表取值,排序等操作。
内置的过滤器有很多,本篇拿几个常用的过滤器做案例讲解下相关的功能。

default

default 的功能是当 value 的值为为布尔值 False 的时候,输出过滤器自定义的值,语法

{{ value | default:"nothing" }}

视图函数 context 内容

# 上海悠悠,QQ交流群:750815713

def personalView(request):
    context = {
        "hello": "hello world!",
        "name": "上海-悠悠",
        "html": "<h2>这是一段html标签</h2>",
        "n_name": "",
        "age": 20,
        "fancy": ["python", "django", "pytest"],
        "blog": {
            "url": "https://www.cnblogs.com/yoyoketang/",
            "img": "https://pic.cnblogs.com/avatar/1070438/20161126151035.png"
        }
    }
    return render(request, "personal.html", context=context)

personal.html 模板的部分内容

<div>
    <p class="text_gray"><span>姓名: </span>{{ n_name | default:"yoyo" }}</p>
</div>

n_name 的值为空,所以在页面上回显示默认值 yoyo

add

add 的功能是将 value 的值加一个值,比如把age的值加8

{{ value | add:"8" }}

personal.html 模板的部分内容

<div>
    <p class="text_gray"><span>年龄:</span>{{ age | add:"8" }}</p>
</div>
first、last、join

first 是输出列表中第一个,last 是输出列表中最后一个值,join是连接列表的值

{{ value | first }}
{{ value | last }}
{{ value | join:"arg" }}

personal.html 模板的部分内容

    <p class="text_gray"><span>感兴趣的技术first:</span>{{ fancy | first }}</p>
    <p class="text_gray"><span>感兴趣的技术last:</span>{{ fancy | last }}</p>  
    <p class="text_gray"><span>感兴趣的技术join:</span>{{ fancy | join:" | " }}</p>
safe

safe 关闭html转义,告诉Django,这段代码是安全的,不用转义

{{ value | safe }}

personal.html 模板的部分内容

    <p class="text_gray"><span>html标签:</span>{{ html }}</p>
    <p class="text_gray"><span>html标签:</span>{{ html | safe}}</p>
显示效果

personal.html 模板的部分内容

# 上海悠悠,QQ交流群:750815713
<div>
    <p class="text_gray"><span>姓名: </span>{{ n_name | default:"yoyo" }}</p>
    <p class="text_gray"><span>年龄:</span>{{ age | add:"8" }}</p>
    <p class="text_gray"><span>感兴趣的技术first:</span>{{ fancy | first }}</p>
    <p class="text_gray"><span>感兴趣的技术last:</span>{{ fancy | last }}</p>
    <p class="text_gray"><span>感兴趣的技术join:</span>{{ fancy | join:" | " }}</p>
    <p class="text_gray"><span>html标签:</span>{{ html }}</p>
    <p class="text_gray"><span>html标签:</span>{{ html | safe}}</p>
    </div>

页面显示

python测试开发django-69.templates模板过滤器filter

除了上面的这些过滤器,还有很多内置过滤器,如果内置过滤器不能满足你的需求,也可以自己写一个过滤器!

上一篇:sqlserver 同一列不同数据放到一行不同列


下一篇:decltype,initializer_list,variadic templates学习记录(c++)