templates模板语法传值
templates模板语法传值
-
{{ }}:变量相关
-
{% %}:逻辑相关
render支持给两种html文件传值的方式。
python所有的基本数据类型,函数名,类型,对象都可以被传到html上。
针对函数名和类名,模板语法会自动加括号调用(但是不支持传递额外的参数)
模板语法统一采用局点符 . 方式获取容器类型中的数据
.key
.index
.key.index.index.key
前端:
{% for user_obj in user_queryset %}
<tr>
<td>{{ user_obj.id }}</td>
<td>{{ user_obj.username }}</td>
<td>{{ user_obj.password }}</td>
<td>{{ user_obj.password }}</td>
<td>
<a href="" class="btn btn-primary btn-xs">编辑</a>
<a href="" class="btn btn-danger btn-xs">删除</a>
</td>
</tr>
{% endfor %}
后端:
def index(request):
# 模版语法可以传递的后端python数据类型
n = 123
f = 11.11
s = '我也想奔现'
b = True
l = ['小红', '姗姗', '花花', '茹茹']
t = (111, 222, 333, 444)
d = {
'username': 'jason',
'age': 18,
'info': '这个人有点意思',
'hobby':[1,2,3,{'info':'junjie'}]
}
se = {'晶晶', '洋洋', '嘤嘤'}
def func():
print('我被执行了')
return '你的另一半在等你'
class MyClass(object):
def get_self(self):
return 'self'
@staticmethod # 转为普通函数
def get_func():
return 'func'
@classmethod # 绑定给类的方法
def get_class(cls):
return 'cls'
"""
对象被展示到html页面上
就类似于执行了打印操作也会触发
__str__方法
"""
def __str__(self):
return '到底会不会?'
obj = MyClass()
# return render(request,'index.html',{}) # 一个个传
return render(request, 'index.html', locals())
前端:
<body>
<p>{{ n }}</p>
<p>{{ f }}</p>
<p>{{ s }}</p>
<p>{{ b }}</p>
<p>{{ l }}</p>
<p>{{ d }}</p>
<p>{{ t }}</p>
<p>{{ se }}</p>
<p>传递函数名会自动加括号调用 但是模版语法不支持给函数传额外的参数:{{ func }}</p>
<p>传类名的时候也会自动加括号调用(实例化){{ MyClass }}</p>
<p>内部能够自动判断出当前的变量名是否可以加括号调用 如果可以就会自动执行 针对的是函数名和类名</p>
<p>{{ obj }}</p>
<p>{{ obj.get_self }}</p>
<p>{{ obj.get_func }}</p>
<p>{{ obj.get_class }}</p>
<p>{{ d.username }}</p>
<p>{{ l.0 }}</p>
<p>{{ d.hobby.3.info }}</p>
</body>