• Django 自定义模板语法


    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
    
    ######################定义标签#####################
    <br>
    @register.simple_tag
    def simple_tag_multi(v1,v2):
        return  v1 * v2
    <br>
    @register.simple_tag
    def my_input(id,arg):
        result = "<input type='text' id='%s' class='%s' />" %(id,arg,)
        return mark_safe(result)

    1、在settings中的INSTALLED_APPS配置当前app(即加上当前app的名字,如‘app01’),不然django无法找到自定义的simple_tag.

    2、在app中创建templatetags模块(模块名只能是templatetags)

    3、创建任意 .py 文件,如:my_tags.py

    -------------模板页面.html--------------------
    过滤器: {{var|filter_name:参数}} # 参数只能是一个
    
    标签: {% simple_tag 参数1 参数2 ... %} #参数不限
    
    
    {% load my_tags %}  
          
    # 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 %}
    {% if num|filter_multi:30 > 100 %}
        {{ num|filter_multi:30 }}
    {% endif %}

    对比过滤器与自定义标签的使用:
      过滤器函数的参数只能有两个,自定义标签无参数限制
      过滤器可以与逻辑标签共同使用,比如if标签。自定义标签不可以。

  • 相关阅读:
    metadata
    java.net.SocketException: Permission denied 连网权限
    JUnit4 测试
    web生成工具
    Linux scp 两台服务器传输文件
    eclipse 无法导入项目
    html 流动字幕 marquee 标签 jquery
    libSVM 简易入门
    程序员创业指导书
    svm(libsvm)在文本分类中的应用
  • 原文地址:https://www.cnblogs.com/ldq1996/p/8618411.html
Copyright © 2020-2023  润新知