• $Django 模板层(变量、过滤器 、标签)、自定义(模板过滤器,标签)


    1 模版语法之变量:详见源码
      -{{ 变量 }}:******重要******{#相当于print了该变量#}

    {#变量为函数和类时会自动加()执行拿到结果,如果函数和类需要传参数,则无值#}
    <p>函数:{{ test }}</p>
    {#对象内存地址#}
    <p>对象:{{ p1 }}</p>

      -深度查询---->统一都用句点符 .

    {#列表取值 .0/1/2 字典取值 .name#}
    <p>列表对象的age:{{ p_list.1.age }}</p>

     
     2 模版之过滤器
      -语法:{{第一个参数|过滤器名字:第二个参数}},最多2个参数(自定义的也是)
      -常用过滤器:(详细用法见源码)
       -length
       -default
       -slice
       -date
       -filesizeformat
       -truncatechars
       -truncatewords
       -safe
       -add
     3 模版之标签
      -{% 标签 %}
      -for:forloop:对象(里面有好多东西:parentloop,last,first,counter....)忘记的话, 自己打印一下

    {% for foo in 'abcdef' %}
    {{ forloop }}
    <p>
    ({{ foo }}) {{ forloop.counter0 }} {{ forloop.counter }} {{ forloop.revcounter }} {{ forloop.first }} {{ forloop.last }}</p>
    {% endfor %}

       empty:被循环的对象是空,才走它

    {% for foo in '' %}
    <p>{{ foo }}</p>
    {% empty %}
    <p>循环体为空 执行empty</p>
    {% endfor %}

       for循环可以嵌套,也可以用if, ***标签不能用在if判断,过滤器,运算符等可以用在if判断
      -if:

    {% if tag %}
    <p>此处为if(if标签内条件不能是 标签 )</p>
    {% elif tag == 2 %}
    <p>此处为elif</p>
    {% else %}
    <p>此处为else</p>
    {% endif %}

      -with:重命名,应用在变量名过长

    {% with dic.hb.0 as b%}
    <p>取别名简化书写 {{ b }}</p>
    {% endwith %}

      ********都要有结束********
      
     4 自定义标签和过滤器
      --***过滤器最多2个参数,标签可以多个
      -自定义过滤器
       -1 没注册app,一定要注册
       -2 在app下创建一个templatetags(****名字不能变***)的文件夹(模块)
       -3 在模块下创建一个py文件,名字随意:mytag.py
       -4 # 第一步,导入template
          from django.template import Library
          # 第二步,定义一个叫register的变量=template.Library()
          register = Library()
       -5 写一个函数,用@register.filter(name='yyy')装饰一下(name可以指定别名,没取别名用函数名)

        @register.filter(name='yyy')
        def str_add(str1, str2): #一定要有返回值
         # 业务逻辑很复杂
         return str1 + str2
       -6 在模板里:(新定定义标签,过滤器后,都要重启程序)
        {%  load  mytag %}
        {{  'lqz' | yyy : 'nb' }}
      -自定义标签:
       -1-4:前4步,根过滤器的定义完全一样
       -5 只是装饰器不一样
       @register.simple_tag()
        def add_nb(value):
         return value+'nb'
       -6 在模板里:(多个参数,以空格区分)
        {% load mytag %}
        {% add_nb 'lqz'%}
       

  • 相关阅读:
    neo4j通过LOAD CSV导入结点和关系
    二叉树的几种遍历方法
    数据结构之二叉排序树
    结合数据结构来看看Java的String类
    变量和对象
    Java虚拟机的内部体系结构
    算法

    freemarker
    solr的安装和启动
  • 原文地址:https://www.cnblogs.com/3sss-ss-s/p/9936414.html
Copyright © 2020-2023  润新知