• Django 模板标签(过滤器)


    文章对应的B站视频:https://www.bilibili.com/video/BV1Tu41127Ca/

    Django系列文章对应的目录:https://www.cnblogs.com/emanlee/p/15860241.html

    过滤器

    用在模板文件(如 html 文件)中。

    模板语法:

    {{ 变量名 | 过滤器:可选参数 }}

    模板过滤器可以在变量被显示前修改它,过滤器使用管道字符(|),如下所示:

    {{ name|lower }}

    {{ name }} 变量被过滤器 lower 处理后,大写转换为小写。

    过滤管道可以被* 套接* ,既是说,一个过滤器管道的输出又可以作为下一个管道的输入:

    {{ my_list|first|upper }}

    以上实例取第一个元素(或第一个字符),并且转化为大写。

    有些过滤器有参数。 过滤器的参数跟随冒号之后并且总是以双引号包含。 例如:

    {{ bio|truncatewords:"30" }}

    这个将显示变量 bio 的前30个词。

    其他过滤器:

    • addslashes : 添加反斜杠到任何反斜杠、单引号或者双引号前面。
    • date : 按指定的格式字符串参数格式化 date 或者 datetime 对象,实例:
      {{ pub_date|date:"F j, Y" }}
    • length : 返回变量的长度。

    default

    default 为变量提供一个默认值。

    如果 views 传的变量的布尔值是 false,则使用指定的默认值。

    以下值为 false:

    0  0.0  False  0j  ""  []  ()  set()  {}  None

     

    mysite456/mysite456/views.py 文件代码:

    from django.shortcuts import render
    
    def mydef(request):
        name =0
        return render(request, "mytemp.html", {"name": name})

    mysite456/templates/mytemp.html 文件代码:

    {{ name|default:"简单示例demo666" }}
     

    再次访问 http://127.0.0.1:8003/mytemp/,可以看到页面:

    length

    返回对象的长度,适用于字符串和列表。

    字典返回的是键值对的数量,集合返回的是去重后的长度。

    mysite456/mysite456/views.py 文件代码:

    from django.shortcuts import render
    
    def mydef(request):
        name ="简单示例demo"
        return render(request, "mytemp.html", {"name": name})

    mysite456/templates/mytemp.html 文件代码:

    {{ name|length}}

    再次访问 http://127.0.0.1:8003/mytemp/,可以看到页面:

    filesizeformat

    以更易读的方式显示文件的大小(即'13 KB', '4.1 MB', '102 bytes'等)。

    字典返回的是键值对的数量,集合返回的是去重后的长度。

    mysite456/mysite456/views.py 文件代码:

    from django.shortcuts import render
    
    def mydef(request):
        num=1024
        return render(request, "mytemp.html", {"num": num})

    mysite456/templates/mytemp.html 文件代码:

    {{ num|filesizeformat}}
     再次访问 http://127.0.0.1:8003/mytemp/,可以看到页面:

    date

    根据给定格式对一个日期变量进行格式化。

    格式 Y-m-d H:i:s返回 年-月-日 小时:分钟:秒 的格式时间。

     

    mysite456/mysite456/views.py 文件代码:

    from django.shortcuts import render
    
    def mydef(request):
        import datetime
        now  =datetime.datetime.now()
        return render(request, "mytemp.html", {"time": now})

    mysite456/templates/mytemp.html 文件代码:

    {{ time|date:"Y-m-d" }}

    再次访问 http://127.0.0.1:8003/mytemp/,可以看到页面:

    truncatechars

    如果字符串包含的字符总个数多于指定的字符数量,那么会被截断掉后面的部分。

    截断的字符串将以 ... 结尾。

    mysite456/mysite456/views.py 文件代码:

    from django.shortcuts import render
    
    def mydef(request):
        views_str = "简单示例demo"
        return render(request, "mytemp.html", {"views_str": views_str})

    mysite456/templates/mytemp.html 文件代码:

    {{ views_str|truncatechars:2}}

    再访问访问 http://127.0.0.1:8003/mytemp/,可以看到页面:

    safe

    将字符串标记为安全,不需要转义。

    要保证 views.py 传过来的数据绝对安全,才能用 safe。

    和后端 views.py 的 mark_safe 效果相同。

    Django 会自动对 views.py 传到HTML文件中的标签语法进行转义,令其语义失效。加 safe 过滤器是告诉 Django 该数据是安全的,不必对其进行转义,可以让该数据语义生效。

    mysite456/mysite456/views.py 文件代码:

    from django.shortcuts import render
    
    def mydef(request):
        views_str = "<a href='https://www.cnblogs.com/emanlee/'>点击跳转</a>"
        return render(request, "mytemp.html", {"views_str": views_str})

    mysite456/templates/mytemp.html 文件代码:

    {{ views_str|safe }}

    再访问访问 http://127.0.0.1:8003/mytemp/,可以看到页面:

    REF

    https://www.runoob.com/django/django-template.html

  • 相关阅读:
    jvm详解
    JVM堆外内存
    Guava基本使用
    Mondrian开源OLAP引擎详解
    Java8新特性简明教程
    TCP/IP协议三次握手和四次挥手详解
    Go 方法与函数区别
    Go 通道 Chan 详解
    kylin详细介绍
    计数排序
  • 原文地址:https://www.cnblogs.com/emanlee/p/15853733.html
Copyright © 2020-2023  润新知