一.模版简介
DTL:django模版语言
核心:
变量 {
{}}标签 {% %}
二.模版语法之变量
变量渲染:{
{变量}}变量深度查询:{
{变量.索引/key值/方法}}三.模版之过滤器
变量之过滤器(是个函数)
语法:(后面只能传一个函数)
{
{变量名|过滤器的名字:参数}}内置过滤器:
<p>{
{ age|add:3 }}</p><p>{
{ name|length }}</p><p>{
{ bol|default:'123' }}</p><p>{
{ ll2|default:'我是空的'}}</p><p>{
{ file_size|filesizeformat }}</p><p>{
{ ctime }}</p><p>{
{ ctime|date:'Y年m月' }}</p><p>{
{ name|slice:'2:4' }}</p><p>{
{ name|truncatechars:6 }}</p><p>{
{ name2|truncatewords:2 }}</p><p>{
{ href|safe }}</p>四.模版之标签
语法:{% %}
foo是一个可迭代对象
{% for a in foo %}
{% endfor %}
forloop:counter,couter0,revcounter,revcouter0,first,last,parentloop:父循环的forloop对象
for---empty的使用
{% for foo in ll2 %}
{
{ foo ]}{% empty %}
没有值啊
{% endfor %}
if判断
{% if ll2 %}
ll2有值
{% elif ll %}
ll有值
{% else %}
ll2没有值
{% endif %}
with重命名
{% with dic.hobby.1 as a %}
{
{a}}<p>aaaa</p>
{% endwith %}
五.自定义过滤器
1.确认app是否在settings中注册
2.在app下创建templatetags的模块(名字固定)
3.在模块下创建py文件(名字随意)--->在模块中{% load py文件名字 %}
4.在py文件中写过滤器
from django.template import Library
register = Library()
# 指定了name之后,模版上使用的时候,直接用name调用,如果没指定name,就用函数的名字
#过滤器最多有两个参数
@register.filter(name='myadd')
def my_add(a,b):
print(a+b)
return a+b
5.模版中使用
1 {% load py文件名字 %}
2 {
{ 变量|myadd:1 }}六.自定义标签
1.确认app是否在settings中注册
2.在app下创建templatetags的模块(名字固定)
3.在模块下创建py文件(名字随意)--->在模版中(% load py文件名字 %)
4.在py文件中写过滤器
from django.tamplate import Library
register = Library()
# 指定了name之后,模版上使用的时候,直接用name调用,如果没指定name,就用函数的名字
# 过滤器最多有两个参数
@register.simplr_tag(name='mytag')
def my_tag(a,b,c):
return a+b+c
5.模版中使用
1 {% load py文件名字 %}
2 {% mytag 参数1 参数2 参数3 %}
七. 标签和过滤器的区别:
1.标签和过滤器的区别:
2.使用过滤器{
{}} 标签使用:{% %}3.过滤器可以放在if判断后,标签不能放在if判断后