• 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标签。自定义标签不可以。

  • 相关阅读:
    SQL 两张结构一样的表合并查询 .
    如何引用传递String Boolean 等,并改变他们的值
    SQL数据库还原时备份集中的数据库备份与现有的数据库不同的解决办法
    sqlserver查询指定树形结构的所有子节点
    TortoiseSVN 合并操作简明教程
    svn的merge使用例子
    svn merge部分的详细说明
    SVN使用方法总结
    spring中的aware接口
    spring是怎样面向接口编程的?
  • 原文地址:https://www.cnblogs.com/ldq1996/p/8618411.html
Copyright © 2020-2023  润新知