django模板语言和过滤

时间:2019-03-19
本文章向大家介绍django模板语言和过滤,主要包括django模板语言和过滤使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

一:模板组成

  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 %}