Django模板语言中的Filters的使用方法
Filters可以称为过滤器。下面我们简单介绍是如何使用他的。
Filters的语法: {{ value|filter_name:参数 }}
Django大概提供了六十个内置过滤器,下面我们简单介绍几个。
首先,基本操作都知道,urls.py中:
from app01 import views urlpatterns = [
path('demo/', views.demo),
]
然后,views.py中:
def demo(request):
pass
pass需要我们自己替换。
另外创建一个demo.html显示结果。
length
返回值的长度,作用于字符串和列表。
def demo(request):
name = '徐雪'
return render(request,
'demo.html',
{
'name':name
})
view.py
<body>
{{ name }}-{{ name|length }}
</body>
demo.html

default
如果一个变量是false或者为空,就是用默认值,否则使用变量的值。
<body>
{{ bucunzai|default:'不存在' }}
</body>
demo.html

filesizeformat
将值格式化为一个“人类可读”的文件尺寸
def demo(request):
file_size = 123456789
return render(request,
'demo.html',
{
'file_size':file_size
})
views.py
<body>
<p>
文件大小:
{{ file_size|filesizeformat }}
</p>
</body>
demo.html

切片
def demo(request):
name_list = ['张三','李四','王五','王二麻子']
return render(request,
'demo.html',
{
'name_list':name_list
})
views.py
<p>
切片前:
{{ name_list }}<br>
切片后:
{{ name_list|slice:'1:3' }}
</p>
demo.html

date
时间格式化
def demo(request):
from datetime import datetime
now = datetime.now()
return render(request,
'demo.html',
{
'now':now
})
views.py
<p>
格式化之前:
{{ now }}<br>
时间格式化:
{{ now|date:'Y-m-d H:i:s' }}
</p>
demo.html

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

点击html上面的连接就会跳转。
truncatechars
如果字符串字符多于指定的字符数量,那么会被截断。截断的字符串将以可翻译的省略号序列(“...”)结尾。
def demo(request):
text = '发的反对法士大夫打发士大夫大师傅大师傅士大夫地方都是发生的广泛的的废墟发生发射点'
return render(request,
'demo.html',
{
'text':text
})
views.py
<p>
省略前:
{{ text }}<br>
省略后:
{{ text|truncatechars:20 }}
</p>
demo.html

自定义Filters
首先在自己的app文件夹下面创建一个Python Package,命名为templatetags。然后在这个文件夹下面新建一个py文件,我命名为myfilters.py。到这里基本工作已完成。接下来编写自己的自定义filters。
from django import template
register = template.Library() # 告诉django的模板语言我现在有一个自定义的filter语言,名字叫demo
@register.filter(name='demo')
def add_one(arg):
return '{} is good!'.format(arg)
myfilters.py
{% load myfilters %}
<!--name是从views.py中传过来的变量,demo是myfilter.py中的filters方法-->
{{ name|demo }}
demo.html

上面是传入一个值,两个值怎么办?
from django import template
register = template.Library() # 告诉django的模板语言我现在有一个自定义的filter语言,名字叫more
@register.filter(name='more')
def add_more(arg,arg1):
'''
第一个参数永远是管道符前面的参数
:param arg:管道符前面的变量
:param arg1:冒号后面的变量
:return:
'''
return '{} is {}!'.format(arg,arg1)
myfilters.py
{% load myfilters %}
<!--name是从views.py中传过来的变量,more是myfilter.py中的filters方法-->
{{ name|more:'美丽的。' }}
demo.html

Django模板语言中的Filters的使用方法的更多相关文章
- django模板语言中的extends,block和include
extends和block一起用 它们用于母版和子版的继承 在母版html中将一些需要替换的部分用{% block xxx %}...{% endblock %}括起来, 在子版html中,在第一行需 ...
- C语言中的const,free使用方法具体解释
注意:C语言中的const和C++中的const是有区别的,并且在使用VS编译測试的时候. 假设是C的话.请一定要建立一个后缀为C的文件.不要是CPP的文件. 由于.两个编译器会有区别的. 一.C语言 ...
- C语言中malloc函数的使用方法
C语言中malloc是动态内存分配函数.函数原型:void *malloc(unsigned int num_bytes);参数:num_bytes 是无符号整型,用于表示分配的字节数.返回值:如果分 ...
- django模板中的extends和include使用方法
一.extends使用方法 首先extends也就是继承,子类继承父类的一些特性.在django模板中通过继承可以减少重复代码. 首先我们建立一个app,名字叫做hello.别忘了在settings. ...
- Django 模板中 变量 过滤器 标签 的使用方法
一.变量 1.变量的形式是:{{variable}}, 当模板引擎碰到变量的时候,引擎使用变量的值代替变量. 2.使用dot(.)能够访问变量的属性 3.当模板引擎碰到dot的 ...
- Linux-C语言中gettimeofday()函数的使用方法(转载)
1.简介: 在C语言中可以使用函数gettimeofday()函数来得到时间.它的精度可以达到微妙 2.函数原型: #include<sys/time.h> int gettimeofda ...
- linux下C语言中的flock函数使用方法 .
表头文件 #include<sys/file.h> 定义函数 int flock(int fd,int operation); 函数说明 flock()会依參数operation所指 ...
- C语言中Union类型的使用方法
转自:http://blog.csdn.net/feimor/article/details/6858103 使用C语言时,常常使用struct,对于union类型却几乎没有用过,只知道它是联合类型, ...
- R语言中Fisher判别的使用方法
最近编写了Fisher判别的相关代码时,需要与已有软件比照结果以确定自己代码的正确性,于是找到了安装方便且免费的R.这里把R中进行Fisher判别的方法记录下来. 1. 判别分析与Fisher判别 不 ...
随机推荐
- 【软工实践】Alpha冲刺(1/6)
链接部分 队名:女生都队 组长博客: 博客链接 作业博客:博客链接 小组内容 恩泽(组长) 过去两天完成了哪些任务 描述 了解了反馈机制的实现原理 确定好算法的框架 对接口的规范化进行学习 展示Git ...
- C图形化第一步
之前的贪吃蛇都是在cmd下实现,每次都要调用cls刷新屏幕,简直是闪瞎了我的狗眼. 度娘得知有一种方法可以避免闪烁,即:双缓冲.原理是先在内存中作图,然后将做好的图复制到前台,同时禁止背景刷新. 主要 ...
- Spark(五十二):Spark Scheduler模块之DAGScheduler流程
导入 从一个Job运行过程中来看DAGScheduler是运行在Driver端的,其工作流程如下图: 图中涉及到的词汇概念: 1. RDD——Resillient Distributed Datase ...
- MongoDB允许其它IP地址访问
网址:https://blog.csdn.net/sl1992/article/details/83964310 文章目录1.允许所有地址访问2.绑定内网IP3.绑定多个IP Linux服务器上安装M ...
- Perf -- Linux下的系统性能调优工具,第 1 部分 应用程序调优的使用和示例 Tracepoint 是散落在内核源代码中的一些 hook,一旦使能,它们便可以在特定的代码被运行到时被触发,这一特性可以被各种 trace/debug 工具所使用。Perf 就是该特性的用户之一。
Perf -- Linux下的系统性能调优工具,第 1 部分 应用程序调优的使用和示例 https://www.ibm.com/developerworks/cn/linux/l-cn-perf1/i ...
- Visual Studio 2019更新到16.2.3
Visual Studio 2019更新到16.2.3 此次更新,包括以下内容: (1)修复找不到Android SDK的bug. (2)修复安装结束后,无法启动的bug. (3)修复关闭VS时, ...
- [转]eclipse常用设置
原文:https://www.cnblogs.com/wangmingshun/p/5675857.html Eclipse重新设置workspace Window—>Preferences—& ...
- lintcode 394. Coins in a Line 、leetcode 292. Nim Game 、lintcode 395. Coins in a Line II
变型:如果是最后拿走所有石子那个人输,则f[0] = true 394. Coins in a Line dp[n]表示n个石子,先手的人,是必胜还是必输.拿1个石子,2个石子之后都是必胜,则当前必败 ...
- ISO/IEC 9899:2011 条款6.8.4——选择语句
6.8.4 选择语句 语法 1.selection-statement: if ( expression ) statement if ( expression ...
- Spring Cloud微服务安全实战- 2-1 环境安装
下面这些.后续随着讲课逐步再去安装. 2019年1月开始 jdk是收费的 找jdk最后一个免费版本 8u192这是jdk1.8最后的一个免费版本 STS spring提供的ide可以方便的开发spri ...