模板
定义模板
变量:视图传递给模板的数据,要遵循标识符规则
语法:{{ var }}
注意:如果变量不存在,则插入的是空字符串
在模板中使用点语法:
1:字典
2:属性或者方法
3:数字索引
在模板中调用对象中的方法,不能传递参数
标签
语法:{% tag %}
作用:
1:在输出中创建文本
2:控制逻辑或者循环
if标签
格式:{% if 表达式 %}语句{% endif %}
{% if 表达式1 %}语句{% elif 表达式2 %}语句2{% endif %}
for
格式:
{% for 变量 in 列表 %}语句{% empty %}语句2{% endfor %}
注意:
列表为空或不存在时执行语句2
例:
def Grades(request):
gradelist=grades.objects.all()
return render(request,'app1/grades.html',{"grades":gradelist})
班级表
学生
{% for stu in grades %}
-
{{ forloop.counter }}-- {{ stu.gname }}
{% empty %}
没有
{% endfor %}
comment
作用:注释多行
格式:
{% comment %}
{% endcomment %}
ifequal、ifnotequal
作用:判断是否相等或者不相等
格式:
{% ifequal 值1 值2%}
语句
{% endifequal %}
如果值1等于值2则执行语句
include
作用:加载模板并以标签内的参数渲染
格式:{% include '模板目录' 参数1 参数2 %}
url
作用:反向解析
格式:{% url 'namespacename' p1 p2 %}
csrf_token
作用:用于跨站请求伪造保护
格式:{% csrf_token %}
block,extends
作用:用于模板的继承
autoescape
作用:用于HTML转义
过滤器
语法:{{ var过滤器 }}
作用:在变量被显示前修改它
lower
upper
过滤器可以传递参数
join
格式:列表|join:"#"
例:
def Grades(request):
gradelist=grades.objects.all()
return render(request,'app1/grades.html',{"grades":gradelist,"list":["xob","handsome"]})
{{list|join:"#"}}
default
如果一个变量没有被提供,或者值为false,空的。可以使用默认值
格式:{{变量名|default:"不存在时返回值"}}
实例:
{{text|default:"不存在"}}
如果text存在则返回text,若不存在则返回不存在
date
根据给定格式转换日期为字符串
格式:{{datevalldate:'y-m-d'}}
escape
HTML转义
加减乘除
例:
num={{text|add:10}}
num2={{text|add:-10}}
{# 相当于num/1*5#}
num3={% widthratio text 1 5 %}
{#相当于num/5*1#}
num4={% widthratio text 5 1 %}
注释
单行注释
语法:{# 注释内容 #}
多行注释
语法:{% comment %}
{% endcomment %}
反向解析
path('', include(app1.urls,namespace="Myapp")),
re_path('^good/(\d+)/$', views.good,name="good"),
连接
模板继承
作用:模板继承可以减少页面内容的重复定义,实现页面重用
blcok标签
在父模板中预留区域,子模板填充
extend标签
格式:{% extends "父模板路径"%}
继承模板,需要写在模板文件的第一行
实例:
定义一个父模板
Title
heater
{% block main %}{# block 后的名与子模板相对应 #}
{% endblock main %}
定义一个子模板
{% extends "app1/base.html" %}
{% block main %}
xob is a handsome boy
{% endblock main %}