zoukankan      html  css  js  c++  java
  • django -- 自定义simpletag 和 filter

    django中自定义simpletag,即使用自己定义的函数在html中处理数据。

    步骤:

    1、创建并注册app

    settings.py

    INSTALLED_APPS = [
        'django.contrib.admin',
        'django.contrib.auth',
        'django.contrib.contenttypes',
        'django.contrib.sessions',
        'django.contrib.messages',
        'django.contrib.staticfiles',
        'mytag',
    ]
    

    2、在此app下创建目录templatetags

    3、在templatetags目录下创建任意py文件,在文件中创建template对象register

    from django import template
    
    register = template.Library()
    
    
    @register.simple_tag
    def testtag(v1, v2):
        return v1 + v2
    

    4.修改html

    顶部添加{% load ttag %}

    {% load ttag %}
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>tag</title>
    </head>
    <body>
        <span>{% testtag 4 7 %}</span>
    </body>
    </html>
    

    效果:

    自定义filter和tag类似

    修改 @register.simple_tag 为 @register.filter

    使用方式变为:{{ 'param1'|testfilter:'param2' }}

    代码:

    ttag.py

    from django import template
    
    register = template.Library()
    
    
    @register.filter
    def testfilter(v1, v2):
        return v1 + v2
    
    {% load ttag %}
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>tag</title>
    </head>
    <body>
        <span>{% testtag 4 7 %}</span>
        <span>{{ 'Hello'|testfilter:'World!' }}</span>
    </body>
    </html>
    

    效果:

    两者对比:

    simpletag不能作为if条件,而filter可以;

    filter的参数必须放到字符串里而且不能加空格,而simpletag的参数以空格分割;

  • 相关阅读:
    LOJ6435 「PKUSC2018」星际穿越
    LOJ6433 「PKUSC2018」最大前缀和
    LOJ2541 「PKUWC2018」猎人杀
    LOJ2545 「JXOI2018」守卫
    LOJ2290 「THUWC 2017」随机二分图
    CF1007B Pave the Parallelepiped
    【学习笔记】卡特兰数
    Linux系统命令“su
    免密
    Window操作系统下的SSL证书管理
  • 原文地址:https://www.cnblogs.com/wumingxiaoyao/p/6529452.html
Copyright © 2011-2022 走看看