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判别 不 ...
随机推荐
- Ubuntu16.04 配置vnc4server
- 批量添加解释-有单词没解释youdao
下载地址: 有单词没解释 批量查询解释 当你有手里很多单词,数量很大比如500个及单词以上,那么一个一个去查询是相当麻烦的. 如果 有个软件实现批量查询然后将查询的结果添加到单词的后面,是不 ...
- RabbitMQ入门学习系列(五) Exchange的Direct类型
快速阅读 利用Exchange的Direct类型,实现对队列的过滤,消费者启动以后,输入相应的key值,攻取该key值对应的在队列中的消息 . 从一节知道Exchange有四种类型 Direct,To ...
- vue+elementui搭建后台管理界面(3侧边栏菜单)
上一节搭好了主框架,但是标签页和侧边栏只是分别展示了各自的菜单,如何将二者联动起来? 定义路由规则:当有 children 属性时,从 children 里取出 path 填充到侧边栏,如: { pa ...
- Django微信小程序后台开发教程
本文链接:https://blog.csdn.net/qq_43467898/article/details/83187698Django微信小程序后台开发教程1 申请小程序,创建hello worl ...
- springIoC注解
一.通过注解注入Bean @Component:组件(spring扫描包下有该注解的类) @ComponentScan(包名):组件扫描(spring扫描该包名下的类) @Configuration: ...
- shell脚本将gbk文件转化为utf-8
使用注意项: 原来文件格式gbk的,否则可能出现utf-8转utf-8乱码. #!/bin/bash function gbk2utf(){ file="$1" echo &quo ...
- Android studio 运行打包 Ionic 项目
1.创建项目 ionic start myapp tabs 2.cd 到项目文件夹中 3.ionic cordova platfrom add android 执行这个命令后建议修改一下应用包名称,参 ...
- 从0开始学爬虫2之json的介绍和使用
从0开始学爬虫2之json的介绍和使用 Json 一种轻量级的数据交换格式,通用,跨平台 键值对的集合,值的有序列表 类似于python中的dict Json中的键值如果是字符串一定要用双引号 jso ...
- oracle11g 查询临时表空间的使用率和正在使用临时表空间的用户
转: oracle11g 查询临时表空间的使用率和正在使用临时表空间的用户 原创 Oracle 作者:记录每一次错误 时间:2018-12-21 15:46:33 11179 0 今天开发反映说临时表 ...