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. Problems found loading plugins: Plugin "GlassFish Integration" was not loaded: required plugin "Java EE: EJB, JPA, Servlets" is disabled.

    idea启动报错:并且无法部署web项目 Problems found loading plugins: Plugin "GlassFish Integration" was no ...

  2. 解决pycharm启动慢

    xms -xmx相关参数设置 打开pycharm的安装目录 D:\PyCharm\PyCharm 2018.2.3\bin下文件pycharm.exe.vmoptions修改默认(版本2016.2)的 ...

  3. extjs.net 按钮执行并显示Mask代码

    <ext:Button ID="ButtonTest" runat="server"  Width="65" Text="同 ...

  4. 9.selenium

    1.安装与入门 pip3 install selenium 将chromedriver放到一个没有权限要求的目录 from selenium import webdriver driverpath=& ...

  5. JS算法练习一

    JS算法练习 1.随机生成一个五位以内的数,然后输出该数共有多少位,每位分别是什么? ①.数组添加元素的方式得到位数(数组长度)与值(数组元素) ①.数组添加元素的方式得到位数(数组长度)与值(数组元 ...

  6. [C++]猜数字游戏的提示(Master-Mind Hints,UVa340)

    [本博文非博主原创,思路与题目均摘自 刘汝佳<算法竞赛与入门经典(第2版)>] Question 例题3-4 猜数字游戏的提示(Master-Mind Hints,UVa340) 实现一个 ...

  7. 让table中td的内容靠上对齐

    valign=“top”; <td valign="top"></td> 点此查看详细table的td的valign属性

  8. L3-1 二叉搜索树的结构 (30 分)

    讲解的很不错的链接:https://blog.csdn.net/chudongfang2015/article/details/79446477#commentBox 题目链接:https://pin ...

  9. 列式数据库~clickhouse日常管理

    clickhouse日常管理一 变量相关  1 查看变量     system.setting相关表  2 设置变量     set variables= 请注意这里是session级别,如果想永久生 ...

  10. 《jQuery精品教程视频》-每天的复习笔记

    第一天 //jquery:简单.粗暴 //jq和js的关系 //js是什么? js是一门编程语言 //jq仅仅是基于js的一个库,jq可理解为就是开发js的一个工具. //概念 //1. 为什么要学j ...