zoukankan      html  css  js  c++  java
  • Django模板,变量,标签,过滤器,自定义标签过滤器

    自定义标签过滤器

    1、在settings中的INSTALLED_APPS配置当前app,不然django无法找到自定义的simple_tag
    2、在app中创建templatetags模块(模块名只能是templatetags)
    3、创建任意 .py 文件,如:my_tags.py

    from django import template
    from django.utils.safestring import mark_safe
     
    register = template.Library()   #register的名字是固定的,不可改变
     
     
    @register.filter       # 自定义过滤器的装饰器
    def filter_multi(v1,v2):
        return  v1 * v2
    
    @register.simple_tag  # 自定义标签装饰器
    def simple_tag_multi(v1,v2):
        return  v1 * v2
    
    @register.inclusion_tag('rbac/static_menu.html')   # 自定义导入HTML代码装饰器
    def inclusion_tag_multi(v1 * v2):
        sum = v1 * v2
        return {'sum': sum}
    

    4、在使用自定义simple_tag和filter的html文件中导入之前创建的 my_tags.py
    {% load my_tags %}
    5、使用simple_tag和filter和inclusion_tag(如何调用)

    {% load xxx %}  
          
    # num=12
    {{ num|filter_multi:2 }} #24
     
    {{ num|filter_multi:"[22,333,4444]" }}
     
    {% simple_tag_multi 2 5 %}  参数不限,但不能放在if for语句中
    {% simple_tag_multi num 5 %}
    
    {% inclusion_tag_multi num 5 %} 
    

    注意:重新启动django
    注意:filter可以用在if等语句后,simple_tag不可以

        {{ num|filter_multi:30 }}
    {% endif %}
    

    注意:filter只能最多传入两个参数,最少一个,simple_tag传入的参数不限
    注意:inclusion_tag会把返回结果传入bac/static_menu.html这个模板中,在别的模板中使用{% inclusion_tag_multi num 5 %} 就会把bac/static_menu.html代码全部拿过来

    @register.inclusion_tag('rbac/static_menu.html')   # 自定义导入HTML代码装饰器
    def inclusion_tag_multi(v1 * v2):
        sum = v1 * v2
        return {'sum': sum}
    
    
  • 相关阅读:
    SVN
    jenkins可视化
    Tomcat
    防火墙
    keepalived
    MHA高可用
    http
    inotifywait
    DNS
    nginx
  • 原文地址:https://www.cnblogs.com/tianhen/p/11253002.html
Copyright © 2011-2022 走看看