zoukankan      html  css  js  c++  java
  • 过滤器和标签

    1 模版简介

                       DTL:django模板语言

                       核心:

                                变量 {{ }}

                                标签 {% %}

                      

             2 模版语法之变量

                       -变量渲染:{{变量}}

                       -变量深度查询:{{变量.索引/key值/方法}}

    def index(request):

        age=18

        name='lqzzzzzzzzzzzzzzz'

        name2='lqz is very big'

        dic={'name':'lqz','age':18,'hobby':['play','game']}

        ll=['lqz',18,'ppp',123]

        ll3=[[1,5,3],[6,9]]

        ll2=[]

        href='<a href="http://www.baidu.com">点我看美女</a>'

        href2=mark_safe(href)

        ctime=datetime.datetime.now()

        file_size=102453425342345234523

        bol=True

        # locals()  代表把当前函数中的所有局部变量,传到模板中

        class Person():

            def __init__(self,name):

                self.name=name

            def test(self):

                return self.name

            def __str__(self):

                return self.name

            @classmethod

            def test2(cls):

                return '123'

        lqz=Person('lqz')

        # 在模板上写变量的时候,相当于执行了print方法,如果是方法,不能加括号,它会自动加括号,但是不支持传参数

        print(lqz)

        print(lqz.test())

        return render(request,'index.html',locals())

             3 模版之过滤器

                       变量之过滤器(是个函数)

                       -语法:(后面只能传一个参数)

                                {{变量名|过滤器的名字:参数}}

                       -内置过滤器:

                            数字+3:

                                <p>{{ age|add:3 }}</p>

                                name的长度:

                                <p>{{ name|length }}</p>

                                bol有值取值没有默认为123

                                <p>{{ bol|default:'123' }}</p>

                                <p>{{ ll2|default:'我是空的' }}</p>

                                对文件大小的转换格式

                                <p>{{ file_size|filesizeformat }}</p>

                                时间:

                                <p>{{ ctime }}</p>

                                <p>{{ ctime|date:'Y年m月' }}</p>

                                从索引2到4切出来

                                <p>{{ name|slice:'2:4' }}</p>

                                从开头切出6个字符后面三个是...

                                <p>{{ name|truncatechars:6 }}</p>

                                切出2个词语后跟...

                                <p>{{ name2|truncatewords:2}}</p>

                      

                       '        可以点击跳转

                                <p>{{ href|safe }}</p>

                                views中的代码: href='<a href="http://www.baidu.com">打开百度</a>

                                                           

             4 模版之标签

                       -语法:{% %}

                       -foo是一个可迭代对象

                           {% for a in foo %}

                                {% endfor %}

                       -forloop:counter,couter0,revcounter,revcouter0,first,last,parentloop:父循环的forloop对象

                       -for--empty的使用

                                {% for foo in ll2 %}

                                         {{ foo }}

                                {% empty %}

                                         没有值啊

                                {% endfor %}

                       -if判断

                                {% if ll2 %}

                                         ll2 有值

                                {% elif ll %}

                                         ll有值

                                {% else %}

                                         ll2 没有值

                                {% endif %}

                       -with重命名

                                {% with dic.hobby.1 as a %}

                                {#{% with a=dic.hobby.1 %}#}

                                         {{ a }}

                                         <p>aaaa</p>

                                         {{ a }}

                                {% endwith %}

                               

             5 自定义过滤器

                       1 确认app是否在settings中注册

                       2 在app下创建templatetags的模块(名字固定)

                       3 在模块下创建py文件(名字随意)--->在模板中{% load py文件名字%}

                       4 在py文件中写过滤器

                                from django.template import Library

                                register = Library()

                                #指定了name之后,模板上使用的时候,直接用name调用,如果没指定name,就用函数的名字

                                # 过滤器最多有两个参数

                                @register.filter(name='myadd')

                                def my_add(a,b):

                                         print(a+b)

                                         return a+b

                       5 模板中使用

                                -1 {% load py文件名字%}

                                -2 {{ 变量|myadd:1}}

             6 自定义标签

                       1 确认app是否在settings中注册

                       2 在app下创建templatetags的模块(名字固定)

                       3 在模块下创建py文件(名字随意)--->在模板中{% load py文件名字%}

                       4 在py文件中写过滤器

                                from django.template import Library

                                register = Library()

                                #指定了name之后,模板上使用的时候,直接用name调用,如果没指定name,就用函数的名字

                                # 过滤器最多有两个参数

                                @register.simple_tag(name='mytag')

                                def my_tag(a,b,c):

                                         return a+b+c

                       5 模板中使用

                                -1 {% load py文件名字%}

                                -2 {% mytag 参数1 参数2 参数3%}

             7 标签和过滤器的区别:

                       1 标签可以传多个参数,过滤器最多只能传2个

                       2 使用过滤器{{ }}   标签使用:{% %}

                       3 ****重点:过滤器可以放在if判断后,标签不能放在if判断后

                      

  • 相关阅读:
    java类加载器与双亲委派机制详解
    JAVA数据库连接池
    使用vue脚手架(vue-cli)快速搭建项目
    安装Vue.js
    @Autowired的使用:推荐对构造函数进行注释
    图解排序算法(三)之堆排序
    快速排序思想
    TCP与UDP区别总结
    JDBC
    solr单机版安装与集群搭建教程
  • 原文地址:https://www.cnblogs.com/zhouhai007/p/10252603.html
Copyright © 2011-2022 走看看