今日内容
1. 模板语言常用语法
2. filter
一. 模板语言常用语法
1. 只需要记两种特殊符号:变量相关的用{{}},逻辑相关的用{%%}。
2. 变量: {{ 变量名 }}, 其中变量名由字母数字和下划线组成. 点(.)在模板语言中有特殊的含义,用来获取对象的相应属性值。
视图函数中的代码:
def template_test(request): name = "小黑"
age = 18
name_list = ["王震", "口哥", "邢垚", "孟哥"]
name_dict = {"first_name": "王震", "last_name": "口哥"}
class Person(object):
def __init__(self, name, age):
self.name = name
self.age = age
def dream(self):
return "想要带你去浪漫的西二旗子, 然后一起去上地做面试题, 其实我特别喜欢望京西."
def __str__(self): # Python3
return "<Person Object: {}>".format(self.name)
def __unicode__(self): # Python2
return "<Person Object: {}>".format(self.name)
p1 = Person("alex", 48)
p2 = Person("日天", 29)
p_list = [p1, p2]
return render(
request,
"test.html",
{
"name": name,
"age": age,
"name_list": name_list,
"name_dict": name_dict,
"person1": p1,
"p_list": p_list
}
)
模板中支持的写法:模板语言不会报错, 要么不显示!!!
<!-- 取变量的值, 如果变量不存在, 那么默认不显示 -->
{{ name }} {{ age }} {{name1}} ==> 小黑 18
<!-- 显示列表 -->
{{ name_list }} ==>["王震", "口哥", "邢垚", "孟哥"]
<!-- 遍历列表, 有一个名字我就生成一个标签 -->
<ul>
{% for name in name_list %}
<li>{{name}}</li>
{% endfor %}
</ul>
输出: 王震
口哥 ==> 为了书写方便, 省略了无序列表的点
邢垚
孟哥
<!-- 按列表索引显示 -->
{{ name_list.0 }} ==> 王震
{{ name_list.2 }} ==> 邢垚
<!-- 显示字典 -->
{{ name_dict }} ==> {"first_name": "王震", "last_name": "口哥"}
<!-- 按键值对显示 -->
{{ name_dict.first_name }} ==> 王震
<!-- 显示一个实例化对象 -->
{{ person1 }} ==> <Person Object: alex>
<!-- 取对象的属性 -->
{{ person1.name }} {{person1.age}} ==> alex 48
<!-- 取对象的方法, 这个方法不能带参数, 如果带参数, 今后学习 -->
{{ person1.dream }} ==> 想要带你去浪漫的西二旗子, 然后一起去上地做面试题, 其实我特别喜欢望京西.
<!-- 取对象列表 -->
{{ p_list }} ==> [<app01.views.Person object at 0x0000000003430D23],<app01.views.Person object at 0x0000000006958463>]
<!-- 取对象列表的元素 -->
{{ p_list.1.name }} ==> 日天