zoukankan      html  css  js  c++  java
  • day65 Django模板语言

     

    常用语法

    只需要记两种特殊符号:

    {{  }}和 {% %}

    变量相关的用{{}},逻辑相关的用{%%}。

    变量

    {{ 变量名 }}

    变量名由字母数字和下划线组成。

    点(.)在模板语言中有特殊的含义,用来获取对象的相应属性值。

    几个例子:

    def template_test(request):
        l = [11, 22, 33]
        d = {"name": "alex"}
    
        class Person(object):
            def __init__(self, name, age):
                self.name = name
                self.age = age
    
            def dream(self):
                return "{} is dream...".format(self.name)
    
        Alex = Person(name="Alex", age=34)
        Egon = Person(name="Egon", age=9000)
        Eva_J = Person(name="Eva_J", age=18)
    
        person_list = [Alex, Egon, Eva_J]
        return render(request, "template_test.html", {"l": l, "d": d, "person_list": person_list})
    {# 取l中的第一个参数 #}
    {{ l.0 }}
    {# 取字典中key的值 #}
    {{ d.name }}
    {# 取对象的name属性 #}
    {{ person_list.0.name }}
    {# .操作只能调用不带参数的方法 #}
    {{ person_list.0.dream }}
    复制代码
    def tem_test(request):
        name="xioahei"
        age=18
        name_list =['wangzhen','mengbin','萌哥']
        p1 =Person('alex',18)
    
        return render(request,
                      'test.html',
                      {'name':name,
                       'name_list':name_list,
                       'Person1':p1
                       })
    

      

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
    
    
    <p>      {{ name }}        </p>
    <p>        {{ name_list.0 }}  </p>
    <p>     {{  Person1 }}    </p>
    
    
    </body>
    </html>

    Flters

    语法{{value| filter_name:参数}}  如果value值没有传的话就显示nothing

    length

     

     fontsize

    {{ value|filesizeformat }}

    如果 value 是 123456789,输出将会是 117.7 MB。

       

     

     slice

     

    date格式化

    date

    格式化

    {{ value|date:"Y-m-d H:i:s"}}

    safe

    Django的模板中会对HTML标签和JS等语法标签进行自动转义,原因显而易见,这样是为了安全。但是有的时候我们可能不希望这些HTML元素被转义,比如我们做一个内容管理系统,后台添加的文章中是经过修饰的,这些修饰可能是通过一个类似于FCKeditor编辑加注了HTML修饰符的文本,如果自动转义的话显示的就是保护HTML标签的源文件。为了在Django中关闭HTML的自动转义有两种方式,如果是一个单独的变量我们可以通过过滤器“|safe”的方式告诉Django这段代码是安全的不必转义。

    比如:

    value = "<a href='#'>点我</a>"

    {{ value|safe}}


      truncatechar

    如果字符串字符多于指定的字符数量,那么会被截断。截断的字符串将以可翻译的省略号序列(“...”)结尾。

    参数:截断的字符数

    {{ value|truncatechars:9}}

     

     

    自定义filter

     

    自定义过滤器只是带有一个或两个参数的Python函数:

    • 变量(输入)的值 - -不一定是一个字符串
    • 参数的值 - 这可以有一个默认值,或完全省略

    例如,在过滤器{{var | foo:“bar”}}中,过滤器foo将传递变量var和参数“bar”

    myfilter文件内容

    from django import  template
    register = template.Library()
    
    @register.filter(name ='sb')  #
    def add_sb(arg):
        return '{} 111111.'.format(arg)
    @register.filter( name ='addstr')
    def add_sb(arg,karg):
        """
        第一个参数永远是管道符前面那个变量
        :param args:
        :return:
        """
        return '{}{}sb.'.format(arg,karg)

     name 是变量

     

    自定义的filter方法

    xioahei 111111.

    wangzhen 111111.

    xioahei地址信息sb.

     sb是自定义filter的参数

     输出结果:

    with

    定义一个中间变量

    {% with total=business.employees.count %}
        {{ total }} employee{{ total|pluralize }}
    {% endwith %}

    csrf_token

    这个标签用于跨站请求伪造保护。

    在页面的form表单里面写上{% csrf_token %}

    注释

    {# ... #}
  • 相关阅读:
    BigPipe_高性能流水线页面技术
    高并发大流量网站 10 个解决方法
    崇高不是比惨
    utf-8无bom格式编码
    go.php
    微信+QQ跳转
    java 设计模式-单例
    HTML连载88-今天把努比亚界面仿真写完了(完结连载)
    Android连载10-动态添加页面、创建一个新闻app
    JavaScript连载9-三目运算符、综合复习
  • 原文地址:https://www.cnblogs.com/mengbin0546/p/9001593.html
Copyright © 2011-2022 走看看