django模板语言和过滤

时间:2022-03-09 22:39:50

一:模板组成

  HTML代码 + 逻辑控制代码

  逻辑代码组成格式:

    使用大括号来引用变量, {{ var_name }}

二: Template和Context对象

//进入该的django的项目环境
>>>python3 manage.py shell
>>>from django.template import Context, Template
>>> t = Template('My name is {{ name }}.') //创建模板
>>> c = Context({'name': 'Stephane'}) //创建上下文
>>> t.render(c) //使用模板渲染上下文 //同一个模板,多个上下文,可以创建模板后,通过for循环渲染上下文
t = Template('Hello, {{ name }}')
for name in ('John', 'Julie', 'Pat'):
print t.render(Context({'name': name}))

模板渲染上下文

三: 模板获取上下文变量的值

//上下文传值
def showTemplate(request):
# value = 'NBA'
# value = [1, 22, 333]
# value = {'key1': 'value1', 'key2': 'value2', 'key3': 'value3'}
# value = datetime.datetime.now() class Person:
def __init__(self,name,age):
self.name = name
self.age = age value = Person('Jack', 18) return render(request, 'template.html', {'value': value})
# return render(request, 'template.html', locals()) //模板渲染
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body> //直接显示
{#{{ value }}#} //数组根据索引取值
{#{{ value.0 }}#} //字典根据键取值
{#{{ value.key1 }}#} //对象点调用获取属性
{#{{ value.year }}#}
{#{{ value.name }}#} </body>
</html>

 三: 过滤变量

//字母大写, 'nba'-->'NBA'
{{ value|upper }}
//数字相加
{{ value|add:2 }}
//首字母大写
{{ value|capfirst }}
//删除指定字符串
{{ value|cut:' ' }}
//时间显示格式
{{ value|date:'Y-m-d'}}
//如果为空,默认显示
{{ value|default:'null' }}
//字符串大小,xxKB
{{ value|filesizeformat }}
//第一个字符
{{ value|first }}
//字符串长度
{{ value|length }}
//截取字符串,截取到倒数第二位
{{ value|slice:'-1' }}
//给变量中的引号加上斜线
{{ value|addslashes }}
//url转码
{{ value|urlencode }} //将字符串转为浏览器识别的HTML标签,两种方式都可以
1.{{ value|safe }} 2. {% autoescape %}
{{ value }}
{% endautoescape %}