美文网首页
Django2.0 自定义过滤器

Django2.0 自定义过滤器

作者: 千释炎 | 来源:发表于2018-08-07 23:52 被阅读0次

  自定义过滤器需要先创建模板库,创建模板库分两步:

  1. 决定模板库放到哪个目录下,可以放在一个应用(app)下,也可以将模板库放在一个模板库放在一个单独的应用下,推荐使用后者,方便在其他应用中使用。不管采用那种方式,都需要将该应用添加到INSTALLED_APPS中

  2. 在模板库所在应用下新建一个templatetags目录,这个目录与models.py、views.py处于同一层次

      本人通过startapp在项目下新建了一个应用用于存放自定义模板文件,其目录格式如下所示:

      

    自定义过滤器目录结构

      然后在templatetags目录下,创建两个空文件(init.py和存放自定义过滤器的文件),其中init.py告诉Python这是一个包含了Python代码的包,如上图所示,这里我创建的存放自定义过滤器内容的文件为custom_template.py

      作为合法的标签库,模块需要包含一个名为register的模块级变量,这个变量是template.Library的实例,是所有注册标签和过滤器的数据结构。所以需要在模块存放自定义文件的顶部插入如下语句:
    from django import template
    
    register = template.Library()
    

  做完这些准备工作后,接下来就可以创建自定义过滤器了。自定义过滤器就是有一个或两个参数的Python函数:

  1. (输入)变量的值

  2. 参数的值,可以是默认值或者完全留空

    例如,在过滤器{{ var | foo:"bar" }}中,过滤器foo会被传入变量var和参数bar

      以一个去掉变量值空格的过滤器为例,在custom-template.py中定义一个处理函数:

    def remove_space(value, arg):
        return value.replace(arg, '')
    

  定义完过滤器后,还需要用Library实例来注册它:

#Library.filter()方法接受两个参数:过滤器名称和过滤器函数本身
register.filter('remove_space', remove_space)

  至此,就可以通过{% load custom_template %}加载过滤器,然后在模板文件中使用:

{% load custom_template %}
{{ message | remove_space:' ' }}

  假设传入的message为"custom template",则 {{ message | remove_space:' ' }}输出为"customtemplate"

  END!

相关文章

  • Django2.0 自定义过滤器

      自定义过滤器需要先创建模板库,创建模板库分两步: 决定模板库放到哪个目录下,可以放在一个应用(app)下,也可...

  • vue filter 过滤器使用

    格式化时间 自定义全局过滤器 vue 自定义过滤器分为"全局过滤器"和"局部过滤器"两种。 一、 全局过滤器 全局...

  • 2017-5-25 AngularJs

    service 自定义服务 1.指令 内置指令 自定义指令 2.过滤器 内置过滤器 自定义过滤器 3.服务 内置服...

  • 自定义过滤器的封装

    封装自定义过滤器 引入过滤器 添加+注册过滤器 使用过滤器

  • angular 过滤器的几种用法

    自定义过滤器: 自定义服务后,连接到应用上,在过滤器中使用:

  • 3 自定义(重要)

    循环 过滤器 自定义过滤器: filter 自定义指令 directive * 注意: 必须以 v-开头 自定...

  • vue自定义过滤器

    自定义过滤器

  • Vue与Angular以及React的区别?

    1、与AngularJS的区别 相同点:都支持指令:内置指令和自定义指令;都支持过滤器:内置过滤器和自定义过滤器;...

  • 复写VUE.JS第四天

    过滤器 自定义指令

  • Vue与Angular、React的区别

    Angular的区别 相同点:都支持指令:内置指令和自定义指令。都支持过滤器:内置过滤器和自定义过滤器。都支持双向...

网友评论

      本文标题:Django2.0 自定义过滤器

      本文链接:https://www.haomeiwen.com/subject/kuwzvftx.html