django过滤查询,Django filter

  django过滤查询,Django filter

  

  过滤器:(Filters)

  常用过滤器介绍:

  在Django的模板语言中,通过使用过滤器来改变变量的显示。

  过滤器的语法:{ { value filter _ name : parameter } }

  使用管道符号“”来应用筛选器。

  其实我个人觉得这里过滤的概念很模糊。过滤的意义就是用后端的方法实现变量,然后拿到前端使用的过程。

  例如:{{ namelower }}将在显示其值之前将name变量应用于较低的筛选器。Lower在这里的作用是把所有的文字变成小写。

  注意事项:

  # #滤波器支持链式运算,即一个滤波器的输出结果作为另一个滤波器的输入。

  # #过滤器可以接收参数,例如:{ { sss truncatewords:30 } },它将显示sss的前30个单词。

  # #如果筛选参数包含空格,则必须用引号括起来。例如,使用逗号和空格连接列表中的元素,例如:{{list join3360 , }}

  # #管道符号“”周围没有空格。请务必注意,没有空格。

  Django的模板语言中提供了大约60个内置过滤器。下面介绍一些常用的方法:

  #default

  如果变量为false或空,则使用给定的默认值;否则,使用变量的值。

  { { value default : nothing } }

  如果没有传递任何值或值为空,则不会显示任何#length

  返回值的长度,作用于字符串和列表。

  {{valuelength}}

  后端:

  “去他妈的!”

  l=[a , b ,4,5,8]

  前端:

  {{llength}}

  {{slength}}显示结果:

  #filesizeformat510号

  将该值格式化为可理解的文件大小单位(13kb,4m)

  {{valuefilesizeformat}}

  后端:

  n=102478450

  前端:

  {{nfilesizeformat}}显示结果:

  9770万#slice 切片(顾头不顾尾)

  {{valueslice: 开始索引3360结束索引:步长 }}

  后端:

  “去他妈的!”

  l=[a , b ,4,5,8]

  前端:

  {{lslice:1:4}}

  {{sslice:5:9}}

  {{lslice:2:-1}}!-从索引2开始切割,切割到以索引1为结尾的位置,忽略尾部-显示结果:

  [b ,4,5]

  他妈的

  [4,5]#date 时间格式化输出

  { {值

  date:"Y-m-dH:i:s"}}

  后端:

  importdatetime

  ctime=datetime.datetime.now()

  前端:

  {{ctime}}

  {{ctimedate:'Y-m-dH:i:s'}}显示结果:

  

June11,2019,2:51p.m.

#safe

 

  Django的模板中会对HTML标签和JS等语法标签进行自动转义,原因显而易见,这样是为了安全。但是有的时候我们可能不希望这些HTML元素被转义,比如我们做一个内容管理系统,后台添加的文章中是经过修饰的,这些修饰可能是通过一个类似于FCKeditor编辑加注了HTML修饰符的文本,如果自动转义的话显示的就是保护HTML标签的源文件。为了在Django中关闭HTML的自动转义有两种方式,如果是一个单独的变量我们可以通过过滤器“safe”的方式告诉Django这段代码是安全的不必转义。

  

后端:

结果:

 

  

<ahref='https://www.cnblogs.com/suguangti/'>点我</a>

上面的safe是在前端取消转义,后端取消转义方法如下:

 

  

fromdjango.utils.safestringimportmark_safe

相关推荐:《Python视频教程》

 

  #truncatechars

  如果字符串字符多于指定的字符数量,那么会被截断,截断的剩余字符将用省略号结尾表示。

  参数:截断的字符数(包含三个点)

  

后端:

结果:(注意...也算进长度里了)

 

  

abcdefg...

#truncatewords

 

  以一个单词为一个元素,单词与单词之间的空格为区分依据,将一定数量的单词进行截断,截断后面的用...表示

  一个单词加上一个空格 计数一个。

  

后端:

显示结果:

 

  

Lifewaslikeaboxofchocolates...

#cut

 

  移除变量中所有的指定相同的字符串

  

{{valuecut:''}}

显示结果:

 

  

youdonow,isnotgoodthing,whydoyoufortoomanytimes!

#join

 

  将列表中的元素用指定字符连接起来

  

后端

结果

 

  

1@2@3@4@5

标签介绍:

 

  #for循环(内部有个empty判断,详见下面if判断示例)

  

后端

结果显示:

 

  

1

forloop的使用:

 

  

后端

forlop里面有几个属性需要我们注意,比如 counter0,counter,first,last它们对应的值在for循环过程中的开始和结束是不一样的

 

  #if 判断

  

{%forfooinl%}
l=['a','b','c','d','e']

3.自定义过滤器/标签/inclusion_tag:

 

  必须做的三件事

  1.在应用名下新建一个名为templatetags文件夹(必须叫这个名字)

  2.在该新建的文件夹内新建一个任意名称的py文件

  3.在该py文件中需要固定写下面两句代码

  ①这里在app01项目程序文件夹新建templatetags文件夹,在此文件夹内新建一个mine.py文件,打开mine.py文件>>输入:

  

fromdjangoimporttemplate

②前端html文件内使用过滤器或者标签:

 

  

{%loadmine%}<!--要使用自定义过滤器和标签,需要先加载自己定义的文件-->

显示的结果:

 

  

99

自定义inclusion_tag

 

  inclusion_tag的作用:创建一个动态的html页面文件a.html,这个页面文件a可以在另外一个页面b中被调用,实现这个页面a应该有的功能。比如:

  在上面的mine.py文件中创建inclusion_tag:

  

#mine.py文件创建inclusion_tag

inclusion_t_test.html文件里面:

 

  

<!--inclusion_t_test.html文件,被导入的html文件-->

调用的html页面文件:

 

  

{%loadmine%}<!--必须要先加载创建标签的文件-->

 

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: