$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'%}
随机推荐
- 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 ...
- 解决pycharm启动慢
xms -xmx相关参数设置 打开pycharm的安装目录 D:\PyCharm\PyCharm 2018.2.3\bin下文件pycharm.exe.vmoptions修改默认(版本2016.2)的 ...
- extjs.net 按钮执行并显示Mask代码
<ext:Button ID="ButtonTest" runat="server" Width="65" Text="同 ...
- 9.selenium
1.安装与入门 pip3 install selenium 将chromedriver放到一个没有权限要求的目录 from selenium import webdriver driverpath=& ...
- JS算法练习一
JS算法练习 1.随机生成一个五位以内的数,然后输出该数共有多少位,每位分别是什么? ①.数组添加元素的方式得到位数(数组长度)与值(数组元素) ①.数组添加元素的方式得到位数(数组长度)与值(数组元 ...
- [C++]猜数字游戏的提示(Master-Mind Hints,UVa340)
[本博文非博主原创,思路与题目均摘自 刘汝佳<算法竞赛与入门经典(第2版)>] Question 例题3-4 猜数字游戏的提示(Master-Mind Hints,UVa340) 实现一个 ...
- 让table中td的内容靠上对齐
valign=“top”; <td valign="top"></td> 点此查看详细table的td的valign属性
- L3-1 二叉搜索树的结构 (30 分)
讲解的很不错的链接:https://blog.csdn.net/chudongfang2015/article/details/79446477#commentBox 题目链接:https://pin ...
- 列式数据库~clickhouse日常管理
clickhouse日常管理一 变量相关 1 查看变量 system.setting相关表 2 设置变量 set variables= 请注意这里是session级别,如果想永久生 ...
- 《jQuery精品教程视频》-每天的复习笔记
第一天 //jquery:简单.粗暴 //jq和js的关系 //js是什么? js是一门编程语言 //jq仅仅是基于js的一个库,jq可理解为就是开发js的一个工具. //概念 //1. 为什么要学j ...