zoukankan      html  css  js  c++  java
  • 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 %}
  • 相关阅读:
    iframe的两种通信方式,iframe的history的优先级
    React-router 将弹框Modal嵌入路由(create a modal route with react-router)
    vue 项目构建 + webpack
    vue 生命周期,v-bind 和 v-on的区别(或 : 和 @的区别),以及父传子、子传父的值传递方式
    linux上配置Sonar代码扫描
    玩转jenkins
    程序小猿的rpa----艺赛旗阶段
    学习完level3加入了uipath家庭,欢迎交流学习。小清风的rpa
    程序员小时光的rpa成长之路(艺赛旗)
    数学期望
  • 原文地址:https://www.cnblogs.com/jiefangzhe/p/10559664.html
Copyright © 2011-2022 走看看