模版语法传值
{{}}:变量相关基础数据类型能够传过去。函数会自动加括号调用,不会传值类会自动实例化,不会传值django模版语法取值是固定的格式,只能采用‘句点符’.索引 .键 两者可以混用{% %}:逻辑相关
模版语法过滤器
过滤器就类似于一些模版语法内置方法
django有内置60多个过滤器,此处我们只介绍几个
基本语法{{数据|过滤器:参数}}
统计长度:
{{数据|length}}
默认值:
{{数据|default:‘默认值’}}
文件大小:
{{数据|filesizeformat}}
日期格式化:
{{数据|date:‘Y-m-d H:i:s’}}
切片操作:(支持步长)
{{数据|slice:‘索引+步长’}}
摘要(切取字符):
{{数据|truncatechars:摘要长度}}
切取单词:
{{数据|truncatewords:个数}}
移除特定字符:
{{数据|cut:‘’}}
拼接:
{{数据|join:‘’}}
拼接(支持加法):
{{数据|Add:‘’}}
取消转义:
{{数据|safe}}
模版语法之标签
for循环{% for foo in l %}{{ forloop }}{% endfor %}{'parentloop': {}, 'counter0': 0, 'counter': 1, 'revcounter': 5, 'revcounter0': 4, 'first': True, 'last': False}索引 计数 倒序计数 倒序索引 是否是第一次循环if判断{% if t %}{% else %} els需要手动补全{% endif %}for和if混合使用{% for foo in l %}{% if forloop.first %}<p>第一次</p>{% elif forloop.last %}{% else %}<p>{{ foo }}</p>{% endif %}{% empty %}<p>for循环的可迭代对象内没有元素无法循环</p>{% endfor %}with取别名{% with 复杂获取数据句式 as 别名 %}{% endwith %}
自定义标签过滤器、标签、inclusion_tag
必须先操作的三个步骤
1.在应用下创建一个名称为:templatetags 文件夹(名字必须为该名字)
2.templatetags下创建一个名字为任意的py文件
3.在py文件内书写
from django import template
register = template.Library()
# 自定义过滤器@register.filter(name='sum')def mysum(v1, v2):return v1 + v2<h1>自定义过滤器使用</h1>{% load mytags %}{{ q|sum:q1#自定义标签@register.simple_tag(name='bg')def bgm(a,b,c,d):return a+b+c+d<h1>自定义标签使用</h1>{% load mytags %}{% bg a b c d %}# 自定义inclusion_tag@register.inclusion_tag(name='inc')def incl_tag(n):data = ['第{}项'.format(i) for i in range(n)]return locals()<h1>自定义inclusion_tag使用</h1>{% load mytags %}{% inc 10 %}
模版的继承
{% extends 'home.html' %}继承home页面模版声明哪块代码可以被修改{% block content %}模版内能被修改的代码块{% endblock %}使用:{% block content %}被修改后的代码块{% endblock %}注意:该修改是在继承页面进行修改,不在被继承的模板页面进行修改一般情况下,模版下的js、css、html三块都能修改,实现同一个页面,不同的效果划分的区域越多,模版的拓展性越强
模版的导入
{% include ‘home.html’ %}
