一、什么事模板语言
html+逻辑控制语句
二、模板语言的作用
帮助前端处理后端发来的数据,方便前端展示(杂糅渲染)
三、模板语言语法
1、{{变量}}
变量使用双大括号{{}}
2、万能的句点号.
1)后端
def index(req):
s="hello"
s1=[1,22,333]
s2={"username":"hope","sex":"jjj"}
return render(req,'index.html',{"obj":s2})
2)前端
##{{obj.2}}
{{obj.username}} 结果 : hope
obj也可以拿属性
1)前端
import datetime
s4=datetime.datetime.now()
return render(req,"index.html",{"obj":s4})
2)后端
{{obj}}
{{obj.year}}
{{obj.month}}
3、{% if %}
(1)语法格式
{% if %}
....
{% endif %}
(2)举例
{% if 1 %} //或者{% if True %} ,这两种都表示前端拿到后端的值,则为1或True,则。。。
<p>hello world</h1>
{% elif obj %} //表示,obj接收到后端的值则。。。
<p>hello 2</p>
{% endif %}
4、{% for %}
(1)语法格式
{% for i in obj %}
......
{% endfor %}
(2)举例
{% for i in obj %}
<p>{{i}}</p> //循环打印出obj的值
<p>{{forloop.counter}}:{{i}}</p> // 索引:值,forloop.counter纪实循环,从1开始
<p>{{forloop.counter0}}:{{i}}</p> //索引从0开始
{% endfor %}
5、filter过滤器
(1)变大写
{{ obj|upper }} 全大写
{{ obj|lower}} 全小写//默认时全小写
{{ obj|first}} 取第一个字母
{{ obj|capfirst}} 首字母大写
{{obj|add:5}} 加法
{{obj|default:"空"}} 返回值为空,则输出自定义的值
注意:
前端
s8=<a href='#'>跳转</a>
后端
方法一autoescape
{% autoescape off %} 将字符串变为html可识别的标签,否则打印出来的只是字符串
{{obj}}
{% endautoescape %}
方法二safe
{{obj|safe}}
四、模板语言自定义标签
1、url
2、views
3、templates