django中html过滤器filter

http://blog.csdn.net/iloveyin/article/details/49560559

safe
让Html标签以及一些特殊符号(如<)生效,下面以例子说明:

#
value = ‘<b>CPT</b>‘

#
那么输出的时候,CPT就是加粗的,如果不加safe那么显示出来的就是纯文本<b>CPT</b>

{{
value|safe }}

striptags
取消所有Html标签,下面以例子说明:

#
value = ‘<p><b>CPT</b></p>‘

#
那么输出的时候,只有CPT且没有加粗没有段落;如果不加的话会显示全部文本<p><b>CPT</b></p>

{{
value|striptags }}

linebreaks
让\n这种控制符号变化Html可以识别的

#
value = ‘CPT\nCPT‘

#
那么输出的时候,会以这样的格式输出<p>CPT<br>CPT</p>,注意这些标签会生效,即会真的换行

#
很多时候在JS里调用字符串会产生语法错误,大部分情况是因为没有注意到\n的存在,想想为什么?

{{
value|linebreaks }}

truncatechars
这是今天介绍的四个filter中唯一一个带有参数的,用来截取字符串的一段,用法如下:

#
value = ‘CPTTTTTTTTTTTT‘

#
那么输出的时候,会输出‘CPT‘

{{
value|truncatechars:
3

}}

有了这四个工具之后我们来讨论一些具体问题,都是以上列举场景的详细情况。

不想显示出Html标签
一篇文章总有粗体或者什么的,总有红色蓝色的,也就说是必须要被装饰的,但是从数据库中取出来的只是一个长字符串,因此我们需要告诉前端如何显示这些文字,这个时候只需要简单的使用safe过滤器即可。

影响排版
往往问题都出现在什么时候呢?出现在截取字符串即truncatechars同时使用的时候,比如在首页的时候我只想显示某些文章的前100个字,也许采用truncatechars:100过滤器截取,可以采用以下方法:

{{
value|truncatechars:
100|safe
}}

但很多时候这样还是会出错,为什么呢?因为也许你截取的100个字符里Html语法本身就是错误的,比如有

却没有

。所以出错就很显然了,但是有些人这样用:

{{
value|safe|truncatechars:
100

}}

想截取但不想渲染
很多情况都可以通过上面的句子解决,但有些时候我们并不想在首页显示文章摘要的时候渲染这些文字,比如正文中有些红红绿绿的字,但是我们显示摘要的时候只想显示纯黑色得字,怎么办呢?没错,把上面的safe直接改成striptags即可。

在Js里调用
但情况再恶心点,比如你在Js里调用,你还得考虑什么?没错Js是不支持换行的引号的,就是说Js里的引号只支持到一行,下面的语法在Js里是错误的:

var

s =
‘aaaaa

         bbbb‘

但是我们不能保证从数据库中取出来的东西都没有换行,也许你还想截取前100个字符,也许你还想不显示这些html标签,好吧,看下面的代码:

{{
value|striptags|truncatechars:
100|linebreaks
}}

再恶心一点?
你其实会发现空格,大于号,小于号这些东西会以 , <这些形式储存的,所以上面的语句执行之后可能还有会 这种神奇的东西!如果这些东西出现在首页,那是要死的节奏啊。所以下面这条语句完美解决,好吧,我得了不用上四个过滤器会死的病:

{{
value|striptags|safe|truncatechars:
100|linebreaks
}}

时间: 2024-07-29 06:57:07

django中html过滤器filter的相关文章

Servlet中的过滤器Filter详解

转自: http://blog.csdn.net/sd0902/article/details/8395641 web.xml中元素执行的顺序listener->filter->struts拦截器->servlet. 1.过滤器的概念 Java中的Filter 并不是一个标准的Servlet ,它不能处理用户请求,也不能对客户端生成响应. 主要用于对HttpServletRequest 进行预处理,也可以对HttpServletResponse 进行后处理,是个典型的处理链. 优点:过滤

记性不如烂笔头29-java应用中的过滤器Filter(1)

过滤器(Filter),功能非常的强大,是Servlet中最重要的技术之一,WEB应用的开发人员通过Filter技术,对web服务器管理的所有web资源:例如Jsp, Servlet, 静态图片文件或静态 html 文件等进行拦截,从而实现一些特殊的功能.例如实现URL级别的权限访问控制.过滤敏感词汇.压缩响应信息等一些高级功能. Servlet API中提供了一个Filter接口,开发web应用时,如果编写的Java类实现了这个接口,则把这个java类称之为过滤器Filter.通过Filter

好记性不如烂笔头30-java应用中的过滤器Filter(2)

Filter的创建和销毁由WEB服务器负责. web 应用程序启动时,web 服务器将创建Filter 的实例对象,并调用其init方法,完成对象的初始化功能,从而为后续的用户请求作好拦截的准备工作,filter对象只会创建一次,init方法也只会执行一次.通过init方法的参数,可获得代表当前filter配置信息的FilterConfig对象. Web容器调用destroy方法销毁Filter.destroy方法在Filter的生命周期中仅执行一次.在destroy方法中,可以释放过滤器使用的

jav中的过滤器filter

文章来自 https://www.cnblogs.com/coderland/p/5902878.html Filter简介 Filter也称之为过滤器,它是Servlet技术中最实用的技术,Web开发人员通过Filter技术,对web服务器管理的所有web资源:例如Jsp, Servlet, 静态图片文件或静态 html 文件等进行拦截,从而实现一些特殊的功能.例如实现URL级别的权限访问控制.过滤敏感词汇.压缩响应信息等一些高级功能. 它主要用于对用户请求进行预处理,也可以对HttpServ

Django中自定义过滤器的使用

我在这里做的是: 从数据库查出id递增的一些信息,展示在前台. 编写一个过滤器判断查出数据的id是偶数的返回True 奇数返回False 1 创建项目,创建应用,注册应用,配置settings.py文件,配置urls映射,编写views试图,编写模板templates,编写models模块 切记 注册应用.  很多伙伴找不到自己定义的过滤器,是因为忘记注册应用! 2 创建过滤器的目录: 实际上,在项目目录或者应用目录下创建都是可以的,创建一个名为templatetags的python模块 在我这

Django中模板过滤器总结

一.形式:小写: {{ name | lower }} 二.串联:先转义文本到HTML,再转换每行到 <p> 标签: {{ my_text|escape|linebreaks } 三.过滤器的参数 显示前30个字:{{ bio | truncatewords:"30" }} 格式化:{{ pub_date | date:"F j, Y" }} 过滤器列表:{{ 123|add:"5" }} 给value加上一个数值 {{ "

django 中自定义过滤器

多参数过滤器 原文地址:https://www.cnblogs.com/liang715200/p/10587819.html

django中models的filter过滤方法

__gt     大于__gte   大于等于 __lt      小于 __lte    小于等于 __in     存在于一个list范围内 __startswith    以...开头 __istartswith   以...开头忽略大小写 __endswith     以...结尾 __iendswith    以...结尾,忽略大小写 __range   在...范围内 __year      日期字段的年份 __month   日期字段的月份 __day        日期字段的日

Django 模板中 变量 过滤器 标签 的使用方法

一.变量 1.变量的形式是:{{variable}}, 当模板引擎碰到变量的时候,引擎使用变量的值代替变量.    2.使用dot(.)能够访问变量的属性    3.当模板引擎碰到dot的时候,查找的顺序是什么样子呢?        a.字典查找,例如:foo["var1"]        b.属性查找,例如:foo.bar        c.方法查找,例如:foo.bar()        d.list-index查找,例如foo[bar] 注意:方法查找比一般的查找要复杂一些 (1