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'%}

随机推荐

  1. Mysql查看表的建表语句

    已查询Test的建表语句为例: SHOW CREATE TABLE TEST

  2. Linux 三剑客 -- awk sed grep

    本文由本人收集整理自互联网供自己与网友参考,参考文章均已列出,如有侵权,请告知! 顶配awk,中配sed,标配grep awk 参考 sed 参考 grep 参考 在线查看linux命令速记表 app ...

  3. 无法推动项目起步?Let's try McDonald’s Theory

    McDonald’s Theory I use a trick with co-workers when we’re trying to decide where to eat for lunch a ...

  4. Kettle系列:Pentaho DI (Kettle) 下载地址

    Kettle 8 已经发布, 下载地址还不太好找, 这里记录一下: 注: 所有大型软件升级都需要谨慎,  尤其是大版本的第一个小版本都不推荐在生产环境使用. github 总是有最新版 https:/ ...

  5. listView item分割线不显示

    在华为平板上列表上分割线第一个不显示,增大dividerHeight代码解决 <ListView android:id="@+id/list_view" android:di ...

  6. ****** 四十九 ******、软设笔记【UML分析和意义】-建模的意义,UML的特点、结构,用例图

    UML UML又称同一建模语言或标准建模语言,是一个支持模型化和软件系统开发的图形化语言,它的作用域不仅支持面向对象的分析与设计,还支持从需求分析开始的软件开发的全过程. 建模的意义: 模型是对现实的 ...

  7. 【BZOJ】2286: [Sdoi2011]消耗战 虚树+DP

    [题意]给定n个点的带边权树,每次询问给定ki个特殊点,求隔离点1和特殊点的最小代价.n<=250000,Σki<=500000. [算法]虚树+DP [题解]考虑普通树上的dp,设f[x ...

  8. 对div的操作

    链接:https://blog.csdn.net/wide288/article/details/34116495 判断DIV的内容改变的方法 近日,在帮朋友写一段小程序的时候,用到了iframe,在 ...

  9. 父div的透明度不影响子div透明度

    在设置div的透明度的时候如果设置了父div的透明度(opacity=0.8),那么子div的透明度也随着改变了,并且设置子div的透明度不起作用. 这种情况下可以使用rgba来设置父div的透明度: ...

  10. vue安装教程总结

    转载:https://blog.csdn.net/sunny1660/article/details/78326548 简介:       vue.js是一套构建用户界面的渐进式框架.比较简洁,用于解 ...