django2.0转换器和过滤器总结

输出是输入的反馈,只有输入和输出贯通,才能够创造健康的学习系统。

序言

转换器和过滤器是django中的基本功能,虽然已经内置了一些常用的类型,但是,因为网页开发复杂的生产环境,往往并不能够满足需求,在这个时候,就需要自定义转换器和过滤器。本文会首先介绍定义,应用和自定义转换器,适合没有经验的小白来学习。

转换器

简介

转换器是在Django中用来控制参数输入的一个函数,英文名称是converter。应用场景有:

内置转换器

(1)int:非空字符串,默认的转换器。不包括斜杠。
(2)str:匹配任意的0或者整型。
(3)slug:包括“-”,“_”,以及任意的英文字符和数字
(4)uuid:符合uuid匹配规则的
(5)path:匹配非空英文字符串,可以包含斜杠。

自定义转换器的过程:

(1)定义一个类别
(2)在类别定义一个属性,regex,用来保存定义的正则表达式。
(3)实现to_python(self,value)这个方法,将URL中的值变换后输入到视图函数
(3)实现to_urls(self,value)这个方法,将视图函数转换后传递到URL中
(5)将定义好的转换器,注册到Django中,通过如下语法:

from django.urls import redister_converter

register_converter("类名",使用的简化名字)

(6)可以使用定义成功的转换器。

过滤器

定义

过滤器主要在template中使用,作用是用来处理数据,类似于Python语法中的函数。过滤器使用|分割。

常用过滤器

add,cut,date,default,default_if_none,first,last,floatformat,join,length,lower,upper,random,safe,slice,stringtags,truncatechars,truncatechars_html,

自定义过滤器

1.在app下创建一个Python包templatetags,安装APP到installed的APP中。

2.创建过滤器文件:

from django import template
 # 创建模板库对象

register = template.Library()

 # 过滤器函数
def mycut(value,mystr):
      return value.replace(mystr)

 # 将函数注册到模板库中
register.filter("mycut",mycut)

(2*)为了更加方便的将函数注册到模版库中当作过滤器。也可以使用装饰器来将一个函数包装成过滤
器。示例代码如下:

from django import template


register = template.Library()

@register.filter(name='mycut')——(name是为过滤器命名,可以方便修改过滤器的名字)
def mycut(value,mystr):
        return value.replace(mystr,"")

(3)以后想要在模板中使用这个过滤器,就要在模板中 load 一下这个过滤器所在的模块的名字

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值