zoukankan      html  css  js  c++  java
  • 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标签。自定义标签不可以。

  • 相关阅读:
    面向对象的七大设计原则
    06章 初始继承和多态
    面向太阳,不问春暖花开
    05章 体检套餐管理系统
    02章《深入C#数据类型》项目经理评分
    MongoDB快速入门(十二) -- 索引
    MongoDB快速入门(十一)- sort() 方法
    MongoDB快速入门(十)- Limit(),Skip() 方法
    MongoDB快速入门(九)- 投影
    MongoDB快速入门(八)- 删除文档
  • 原文地址:https://www.cnblogs.com/ldq1996/p/8618411.html
Copyright © 2011-2022 走看看