$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'%}
随机推荐
- 阿里Fastjson的使用
Fastjson是一个Java语言编写的高性能功能完善的JSON库.由阿里巴巴公司团队开发的. 主要特性主要体现在以下几个方面: 1.高性能 fastjson采用独创的算法,将parse的速度提升到极 ...
- 从word得到表格数据插入数据库(6位行业代码)
复制表格到excel 点击表格左上角选中全部表格,然后crtl+c,再贴到excel中 可以发现,大类代码,单元格往下走,碰到下一个有值的之前,都是上一个的范围 填充空白单元格 1.选中前四列,然后c ...
- tomcat配置context的crossContext属性应用案例
在tomcat下,context元素有一个crossContext属性,如果配置为true,则可以实现在同一个tomcat下的多个web应用之间实现ServletContext对象访问.该属性主要用于 ...
- NLP里面的一些基本概念
1,corpus 语料库 a computer-readable collection of text or speech 2,utterance 发音 比如下面一句话:I do uh main- m ...
- wx预览图片
wx.previewImage({ current: current, // 当前显示图片的http链接 urls: this.data.imgalist // 需要预览的图片http链接列表 }) ...
- HttpService
// // Source code recreated from a .class file by IntelliJ IDEA // (powered by Fernflower decompiler ...
- sqlserver二进制存储
CREATE TABLE myTable_yq(Document varbinary(max),yq varchar(20)) --SELECT @xmlFileName = 'c:\TestXml. ...
- sublime test3 乱码问题的解决
1.下载ConvertToUTF8插件,地址:http://pan.baidu.com/s/1bnvVd2R 2.按Ctrl+Shift+P打开命令行,输入Install Package,回车,然后继 ...
- Filter 快速开始 异步Servlet 异步请求 AsyncContext 异步线程 异步派发 过滤器拦截
[web.xml] <filter> <filter-name>normalFilter</filter-name> <filter-class>net ...
- 使用cross-env解决跨平台设置NODE_ENV的问题
使用方法: 安装cross-env:npm install cross-env --save-dev 在NODE_ENV=xxxxxxx前面添加cross-env就可以了.