zoukankan      html  css  js  c++  java
  • 37.Python自定义过滤器

    自定义模板过滤器

    1.首先在某个app中,创建一个python包,叫做“templatetags”,注意,这个包的名字一定要是“templatetags”,否者的话,就会找不到定义的过滤器。
    2.在创建的tamplatetags包下面,创建一个python文件,用来存储过滤器。
    3.在新建的python文件中,定义过滤器(也就是函数),这个函数的第一个参数一定是被过滤的那个参数,并且如果在使用过滤器的时候要从视图函数中传递一个参数的话,就可以在过滤器中再定义一个参数,但是注意,过滤器函数最多只能有两个参数。
    4.在写完过滤器函数之后,一定要把过滤器进行注册,不注册,不会进行执行定义的过滤器函数的。首先要使用django.template.Library.filter进行注册。
    5.还要把这个过滤器所在的这个app添加到“settings.py”中的INSTALLD_APPS中,否者的话,就找不到这个app。
    6.在模板中使用“load”标签进行加载过滤器所在的python包。
    7.之后就可以进行传递参数,使用过滤器了。

    示例代码如下:

    views.py中代码如下:
    from django.shortcuts import render
    
    
    def index(request):
        context = {
            'value':'Hello'
        }
        return render(request,'index.html',context=context)
    
    
    在urls.py中进行视图与url的映射:
    from django.urls import path
    from article import views
    
    urlpatterns = [
        path('',views.index, name = 'index'),
    ]
    
    自定义的过滤器所在文件:my_fliter.py
    from django import template
    
    
    # 定义一个类
    register = template.Library()
    
    
    # 设置默认值,如果不从视图函数中船机来参数值的话,就为默认值None
    def greet(value,word=None):
        return value + word
    
    
    # filter()函数中第一个参数为:过滤器的名字,第二个参数为函数的名称
    register.filter("greet",greet)
    
    在DTL模板index.html中进行使用自定义的过滤器:
    {#  如果想要使用自定义的过滤器的话,就必须要先导入 ,导入的名称为自定义过滤器所处的文件名 #}
    {#  必须要把app安装到settings.pyw文件中  #}
    {% load my_fliter %}
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
        {{ value|greet:'小蚂蚁' }}
    </body>
    </html>
    
    运行结果如图所示:

    在这里插入图片描述

    始于才华,忠于颜值;每件事情在成功之前,看起来都是天方夜谭。一无所有,就是无所不能。
  • 相关阅读:
    JS判断页面是否加载完成
    简单的前端验证码
    如何让旧浏览器支持HTML5新标签
    JSON使用(4)
    JSON语法(3)
    JSON简介(2)
    JSON教程(1)
    jQuery-noConflict()
    jQuery
    jQuery
  • 原文地址:https://www.cnblogs.com/guyan-2020/p/12203641.html
Copyright © 2011-2022 走看看