$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'%}
随机推荐
- windows环境配置计划任务让weblogic的servers开机启动【原】
准备脚本 注意如果weblogic在D盘,那么以下cmd中的所有C:都要替换成D: , 因为windows需要切盘符. 启动weblogic管理服务adminServer 的文件: startAdmi ...
- WebStorm记录(2)
继续效果图 CSS初始化 前面理解错了,背景图应该铺满 <div class="bg"> html,body,*{ /*盒子模型使用边框模式*/ box-sizing: ...
- solr插件导入数据库中的数据
solr插件导入数据库中的数据 1:自定义与数据库对应的域: 1.1. 设置业务系统Field 如果不使用Solr提供的Field可以针对具体的业务需要自定义一套Field. 例如:如下是商品信息Fi ...
- in和hasOwnProperty的区别
两者都代表查看某个属性是不是对象自己的,返回布尔值 in判断的是对象的所有属性,包括对象实例及其原型的属性 hasOwnProperty则是判断对象实例的是否具有某个属性
- SpringBoot系列: Eclipse+Maven环境准备
这个链接比我写得更全面, http://tengj.top/2018/01/01/maven/ =============================20190115补充: maven 的一些插件 ...
- Vue 限制input输入 限数字 或 小数点后两位number
Vue 限制input输入 小数点后两位number <input type="number" @keydown="handleInput2" place ...
- DevExpress Winform 常用控件
Ø 前言 DevExpress 控件的功能比较强大,是全球知名控件开发公司,对于开发 B/S 或 C/S 都非常出色,可以实现很炫且功能强大的效果. DevExpress Winform 常用控件是 ...
- Centos下查看mysql的版本
判断是否安装了mysql 输入 whereis mysql 如果安装了会显示mysql的安装所在路径 方法1:使用mysql -v命令查看: 1 2 3 4 [root@yeebian mysql ...
- QIM量化
基于量化思想的水印嵌入模型的主要目的是为了实现盲检测.其主要思想是根据水印信息的不同将原始载体数据量化到不同的量化区间,而检测时根据所属的量化区间来识别水印信息.常见的两种量化方式是QIM和SCS方法 ...
- 第28月第3天 c语言读写文件
1. int ConfigIniFile::OpenFile( const char* szFileName ) { FILE *fp; size_t nLen; int nRet; CloseFil ...