后台数据 返回给前端html页面,进行字符串替换后(模板渲染),再交给浏览器
1.支持 数字,字符串,列表,字典,对象
{{ 变量}} {% 逻辑 %}
2.调用 : 万能的点
后台数据:
def get(self,request):
num = 100
name = ‘周雅婷‘
lst = [‘可爱‘,‘臭宝‘,‘小屁仔‘]
dic ={‘name‘:‘小宝贝‘,‘age‘:18,‘hobby‘:‘看电影‘}
class Animal:
def __init__(self):
self.name = ‘lion‘
def eat(self):
return ‘shi‘
a = Animal()
return render(request,‘index.html‘,{‘num‘:num,‘name‘:name,
‘lst‘:lst,‘dict‘:dic ,‘object‘:a }
html代码:
<p> {{ num }}</p>
<p> {{ name }} </p>
<p> {{ lst.2 }} </p> 列表取值 直接.索引
<p> {{ dict.name}} </p>
<p> {{ object.eat}}</p> 对象只能调用无参的方法
简写: locals() 获取函数内部所有变量的值,并加工成{‘变量名‘:‘变量值‘}这样的字典
把变量名作为键,值作为值
?
语法: 无参数 {{变量1|过滤器}} 有参数 {{变量1|过滤器:参数}}
长度 length eg: {{name|length}}
默认值 default eg:{{xx|default:‘nothing‘}}
切片 slice eg: {{word|slice:‘2:-1‘}}
截断字符 <p>{{ word|truncatechars:‘9‘ }}</p>
截断单词 <p>{{ word|truncatewords:‘3‘ }}</p>
切除 cut 切除空格 {{word|cut:‘ ‘}}
列表拼接 join <p>{{ lst|join:"+" }}</p>
import datetime
now = datetime.datetime.now()
时间 <p>{{ now|date:‘Y-m-d H-i-s‘ }}</p>
安全 safe {{tag|safe}} xss攻击 标签字符串
filesizeformat 文件大小
语法; {% %} {}标签
for循环
{% for name in lst %}
<li>{{ name }}</li>
{% endfor %}
字典循环
{% for k,v in userinfo.items %} userinfo.keys userinfo.values
<li>{{ k }}:{{ v }}</li>
{% endfor %}
循环
每一个{% for循环%}必须对应一个{% endfor %}
每一个{% if循环 %}必须对应一个{% endif %}
{{forloop.counter}} 从1,开始计数
{{forloop.counter0}} 从0开始计数
{{forloop.revcounter}} 4,3,2,1
{{forloop.revcounter0}} 3,2,1,0
{{forloop.first}} 是第一次循环就是true
{{forloop.last}} 是最后一次循环就是true
{{forloop.parentloop.counter}}
?
{% for foo in d3 %}
<li>{{ foo }}</li>
{% empty %} //如果数据为空提示
<li>啥也没有</li>
{% endfor %}
?
if语句支持and,or,==,<,>,>=,<=,!=, in ,not in,is,is not判断,注意条件两端都有空格
{% if d2|length > 3 %}
<a href="">大于3</a>
{% elif d2|length == 3 %}
<a href="">等于3</a>
{% else %}
<a href="">小于3</a>
{% endif %}
起别名,在with语句体中可以使用, 等号两边不能加空格
{% with 别名=userinfo.name %}
<h1>{{ name }}</h1>
{% endwith %}
{% with userinfo.name as 别名 %}
<h1>{{ name }}</h1>
{% endwith %}
1.if 不支持连续判断 if a>b>c
2. 属性的优先级大于方法的
d4 ={‘items‘:‘xx‘}
{% for iin d4.items%} 字典的items方法
d4.items 会使用属性 xx
表单下面加{% csrf_token%}
{% extends ‘base.html‘%} 模板继承
留钩子 一般留三个,可以多留几个
?
{% block content %}
{{ block.super}} 留着模板内容
替换html
{% end block%}
?
{% block css %}
替换html
{% endblock%}
?
{% block js %}
替换html
{% endblock%}
?
2.起名字 留多个钩子的时候名字不能一样
{% block content%}
{% endblock content%}
{% block content1 %}
{% endblock content1 %}
可以降常用的页面内容如导航条,页尾信息等组件保存在单独的文件中,在需要使用的地方导入即可
{% include ‘index.html‘%}
原文:https://www.cnblogs.com/learn-record/p/14615644.html