zoukankan      html  css  js  c++  java
  • Django模板之模板变量过滤器

      Django的模板语言中,通过使用 过滤器 来改变变量的显示;Django的模板语言中提供了大约六十个内置过滤器。

    过滤器规则:

    ·         过滤器的语法: {{ value|filter_name:参数 }}

    ·         使用管道符"|"来应用过滤器。

     

    注意事项:

    a.    过滤器支持链式操作。即一个过滤器的输出作为另一个过滤器的输入。

    b.    过滤器可以接受参数,例如:{{ sss|truncatewords:30 }},这将显示sss的前30个词。

    c.     过滤器参数包含空格的话,必须用引号包裹起来。比如使用逗号和空格去连接一个列表中的元素,如:{{ list|join:', ' }}

       d.    '|'左右没有空格 Django的模板语言中,通过使用 过滤器 来改变变量的显示;Django的模板语言中提供了大约六十个内置过滤器。

    过滤器规则:

    ·         过滤器的语法: {{ value|filter_name:参数 }}

    ·         使用管道符"|"来应用过滤器。

     

    注意事项:

    a.    过滤器支持链式操作。即一个过滤器的输出作为另一个过滤器的输入。

    b.    过滤器可以接受参数,例如:{{ sss|truncatewords:30 }},这将显示sss的前30个词。

    c.     过滤器参数包含空格的话,必须用引号包裹起来。比如使用逗号和空格去连接一个列表中的元素,如:{{ list|join:', ' }}

    d.    '|'左右没有空格 

    常用过滤器:

    lower

    将变量全部转换成小写

    {{ value|lower}}

    如果value传来的字符串是"Name",会显示"name"

    upper

    将变量全部转换成大写

    {{ value|upper}}

    如果value传来的字符串是"Name",会显示"NAME"

    default

    变量设置默认值

    {{ value|default:"nothing"}}

    如果value没有传值或者值为空的话就显示nothing

    length

    返回字符串和列表变量的长度

    {{ value|length }}

    value=['a', 'b', 'c', 'd']的话,就显示4

    safe

    HTML标签和JS等语法标签进行自动转义

    {{ value|safe}}

    比如:value="<script>alert('123')</script>"

    filesizeformat

    将值格式化为一个文件大小(例如 '13 KB', '4.1 MB', '102 bytes'

    {{ value|filesizeformat }}

    如果 value 123456789,输出将会是 117.7 MB

    slice

    切片

    {{ value|slice:"2:-1" }}

    如果 value="hello world"

    date

    日期时间格式化

    {{ value|date:"Y-m-d H:i:s"}}

    如果 value=datetime.datetime.now()

    truncatechars

    截取字符串

    {{ value|truncatechars:9}}

    如果字符串字符多于指定的字符数量,那么会被截断。截断的字符串将以可翻译的省略号序列(“...”)结尾,同时是数量包含在参数个数中

    truncatewords

    截取单词数

    {{ value|truncatewords:3}}

    例如:‘hello girl hi baby yue ma’,得到的结果是 'hello girl h1...'

    cut

    移除与给出参数相同的字符串

    {{ value|cut:' ' }}

    如果value'i love you',那么将输出'iloveyou'

    join

    按给定参数字符拼接

     

    {{ value|join:"+" }}

    如果value['i', 'love', 'you'],那么将输出'i+love+you'

     

    过滤器safe

        Django的模板中在进行模板渲染的时候会对HTML标签和JS等语法标签进行自动转义,这样是为了安全,django担心这是用户添加的数据,比如如果有人给你评论的时候写了一段js代码,这个评论一提交,js代码就执行啦,这样你是不是可以搞一些坏事儿了,写个弹窗的死循环,那浏览器还能用吗,是不是会一直弹窗啊,这叫做xss攻击,所以浏览器不让你这么搞,给你转义了。但是有的时候我们可能不希望这些HTML元素被转义,比如我们做一个内容管理系统,后台添加的文章中是经过修饰的,这些修饰可能是通过一个类似于FCKeditor编辑加注了HTML修饰符的文本,如果自动转义的话显示的就是保护HTML标签的源文件。为了在Django中关闭HTML的自动转义有两种方式,如果是一个单独的变量我们可以通过过滤器“|safe”的方式告诉Django这段代码是安全的不必转义

    过滤器案例:

      lower/upper

    filtertest.html

     1 <!DOCTYPE html>
     2 <html lang="en">
     3 <head>
     4     <meta charset="UTF-8">
     5     <title>模板变量过滤器filter测试</title>
     6 </head>
     7 <body>
     8 <div>
     9     <h1>{{ str }}</h1>
    10     <h1>{{ str|lower }}</h1>
    11     <h1>{{ str|upper }}</h1>
    12 </div>
    13 </body>
    14 </html>

       views.py

    1 def filtertest(request):
    2     s="FILter"
    3     return render(request,"filtertest.html",{"str":s})

    渲染效果:

     

    default 

    filtertest.html

    1 <h1>{{ name|default:"yang" }}</h1>
    2 <h1>{{ m|default:"yang" }}</h1>

      views.py

    1 def filtertest(request):
    2     return render(request,"filtertest.html",{"m":"100"})

    渲染效果:

     

     

  • 相关阅读:
    原型设计工具比较及实践
    原型设计工具比较及实践
    原型设计工具比较及实践
    原型设计工具比较及实践
    原型设计工具比较及实践
    原型设计工具比较及实践
    原型设计工具比较及实践
    软件工程基础大作业感想
    博客园里留下你的成长足迹
    软件工程培训—粗读《构建之法》
  • 原文地址:https://www.cnblogs.com/open-yang/p/11221499.html
Copyright © 2011-2022 走看看