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的参数以空格分割;

  • 相关阅读:
    手机怎么知道5G基站的存在?(小区搜索和SSB简介)
    Python中*args,**kwargs两个参数的作用?
    python之jupyter的安装
    国内安装python库速度慢的解决办法
    MOSFET:金属-氧化物半导体场效应晶体管
    C# 小知识点汇总
    ajax和form和七个中间件
    BBS功能分析
    MVC和MTV
    自关联和auth模块
  • 原文地址:https://www.cnblogs.com/wumingxiaoyao/p/6529452.html
Copyright © 2011-2022 走看看