Django中与Html相关的filter
2016-05-03 15:00
183 查看
Django是个很伟大的东西,它的前端也非常容易上手,只需要掌握它的Template语言。这其中有个非常重要的东西叫filter,又叫过滤器。从本质上讲filter就是一个Python函数,取左端的为输入,分号后面为参数,进行处理后向右端输出,具体用法下面具体讲。当然除了我们自定义filter以外,Django内置的filter也已经足够强大,今天我们的主题就是其中的一类。
也许写过前端代码的你一定遇过以下问题中的一个,又还没解决,那么我觉得这篇文章值得一读
1. 从数据库中取出来带有Html标签的字符串,而你只想显示纯文本。
2. 从数据库中取出来带有Html标签的字符串,你希望显示被装饰后的富文本。
3. 在首页截取文章的一部分显示时导致了首页整个乱了。
4. 在Js里调用数据库中的东西时,有时候导致Js代码出现语法错误
5. 有时候想把’ ‘显示成 有时候想把<显示成’<' 6. 等等... 先说大牛们处理这类问题的方法,手写一系列符合自己要求的过滤器,便迎刃而解;但我们只想用Django自带的filter,下面我们一个一个介绍用到的filter,最后利用这些filter解决上述的疑难杂症。 safe
让Html标签以及一些特殊符号(如<)生效,下面以例子说明:
striptags
取消所有Html标签,下面以例子说明:
linebreaks
让\n这种控制符号变化Html可以识别的
truncatechars
这是今天介绍的四个filter中唯一一个带有参数的,用来截取字符串的一段,用法如下:
有了这四个工具之后我们来讨论一些具体问题,都是以上列举场景的详细情况。
不想显示出Html标签
一篇文章总有粗体或者什么的,总有红色蓝色的,也就说是必须要被装饰的,但是从数据库中取出来的只是一个长字符串,因此我们需要告诉前端如何显示这些文字,这个时候只需要简单的使用safe过滤器即可。
影响排版
往往问题都出现在什么时候呢?出现在截取字符串即truncatechars同时使用的时候,比如在首页的时候我只想显示某些文章的前100个字,也许采用truncatechars:100过滤器截取,可以采用以下方法:
但很多时候这样还是会出错,为什么呢?因为也许你截取的100个字符里Html语法本身就是错误的。
所以出错就很显然了,但是有些人这样用:
想截取但不想渲染
很多情况都可以通过上面的句子解决,但有些时候我们并不想在首页显示文章摘要的时候渲染这些文字,比如正文中有些红红绿绿的字,但是我们显示摘要的时候只想显示纯黑色得字,怎么办呢?没错,把上面的safe直接改成striptags即可。
在Js里调用
但情况再恶心点,比如你在Js里调用,你还得考虑什么?没错Js是不支持换行的引号的,就是说Js里的引号只支持到一行,下面的语法在Js里是错误的:
但是我们不能保证从数据库中取出来的东西都没有换行,也许你还想截取前100个字符,也许你还想不显示这些html标签,好吧,看下面的代码:
再恶心一点?
你其实会发现空格,大于号,小于号这些东西会以 , <这些形式储存的,所以上面的语句执行之后可能还有会 这种神奇的东西!如果这些东西出现在首页,那是要死的节奏啊。所以下面这条语句完美解决,好吧,我得了不用上四个过滤器会死的病:
当然还有一些高级的过滤器,比如有escapejs等,有机会再聊。
也许写过前端代码的你一定遇过以下问题中的一个,又还没解决,那么我觉得这篇文章值得一读
1. 从数据库中取出来带有Html标签的字符串,而你只想显示纯文本。
2. 从数据库中取出来带有Html标签的字符串,你希望显示被装饰后的富文本。
3. 在首页截取文章的一部分显示时导致了首页整个乱了。
4. 在Js里调用数据库中的东西时,有时候导致Js代码出现语法错误
5. 有时候想把’ ‘显示成 有时候想把<显示成’<' 6. 等等... 先说大牛们处理这类问题的方法,手写一系列符合自己要求的过滤器,便迎刃而解;但我们只想用Django自带的filter,下面我们一个一个介绍用到的filter,最后利用这些filter解决上述的疑难杂症。 safe
让Html标签以及一些特殊符号(如<)生效,下面以例子说明:
取消所有Html标签,下面以例子说明:
让\n这种控制符号变化Html可以识别的
这是今天介绍的四个filter中唯一一个带有参数的,用来截取字符串的一段,用法如下:
不想显示出Html标签
一篇文章总有粗体或者什么的,总有红色蓝色的,也就说是必须要被装饰的,但是从数据库中取出来的只是一个长字符串,因此我们需要告诉前端如何显示这些文字,这个时候只需要简单的使用safe过滤器即可。
影响排版
往往问题都出现在什么时候呢?出现在截取字符串即truncatechars同时使用的时候,比如在首页的时候我只想显示某些文章的前100个字,也许采用truncatechars:100过滤器截取,可以采用以下方法:
所以出错就很显然了,但是有些人这样用:
很多情况都可以通过上面的句子解决,但有些时候我们并不想在首页显示文章摘要的时候渲染这些文字,比如正文中有些红红绿绿的字,但是我们显示摘要的时候只想显示纯黑色得字,怎么办呢?没错,把上面的safe直接改成striptags即可。
在Js里调用
但情况再恶心点,比如你在Js里调用,你还得考虑什么?没错Js是不支持换行的引号的,就是说Js里的引号只支持到一行,下面的语法在Js里是错误的:
你其实会发现空格,大于号,小于号这些东西会以 , <这些形式储存的,所以上面的语句执行之后可能还有会 这种神奇的东西!如果这些东西出现在首页,那是要死的节奏啊。所以下面这条语句完美解决,好吧,我得了不用上四个过滤器会死的病:
相关文章推荐
- xml xhtml html dhtml的区别
- 使用Textview显示包含图片的html代码
- 1、关于多个html标签单击事件的实现细节
- 7.HTML框架(老)
- html img Src base64 图片显示
- HTML标签
- HTML之常用标签
- 12个鲜为人知的HTML 5设计小技巧
- HTML <!DOCTYPE> 标签
- 网页表单自动提交
- html多媒体简介:
- html音频
- HtmlAgilityPach基本使用方法
- HTML中鼠标滚轮事件onmousewheel
- mailto: HTML e-mail 链接
- HTML网页之学生成绩绩点计算代码
- HTML设置超链接字体颜色和点击后的字体颜色
- <!DOCTYPE html>很重要
- 【XML】HTML的又一相关语言
- django1.8输出一些非HTML内容