zoukankan      html  css  js  c++  java
  • Django 03 模板路径、模板变量、常用的过滤器

    Django 03 模板路径、模板变量、常用的过滤器

    一、模板路径

      

    #1、在每个app下面添加一个templates文件
    
    #2、在项目views.py里面第33行INSTALLED_APPS里面添加上'book'这个app名
    
    path('test1',views.test1)
    
    def test1(request):
        return render(request,'test.html') #不需要路径,直接可以打开当前目录的html文件
    #模板路径配置总结
    #这是一个设置选项的列表,模板大多数包含两项通用设置;两种方式配置模板
    #方法1、DIRS定义一个目录列表,模板引擎按列表顺序搜索这些目录以查找模板源文件。将templates放在主项目目录下
    #方法2、APP_DIRS告诉模板引擎是否应该进入每个已安装的应用中查找模板,值为True则模板会去安装了的app下面的templates文件夹查找模板。所以我们也可以在每个app的里面创建模板目录templates存放模板,这种方式需要将这个app添加到setting.py文件的INSTALLED_APPS列表中

    二、模板变量

    ls = ['x','y','z']
    dc = {'a':1,'b':2}
    def hello():
        return 'GGGG'
    class Fruits:
        def __init__(self,name,color):
            self.name = name
            self.color = color
        def say(self):
            return 'hehehehe'
    ap=Fruits('apple','red')
    
    def book_index2(request,xx):
        name = 'takadasdsa'
        return render(request,'book/index.html',
                      context={'name':'taka', #通过context来传变量
                               'age':xx,#变量xx
                               'list':ls,#列表
                               'dict':dc,#字典
                               'hello':hello,#函数
                               'fruits_say':ap.say,#类方法
                               }
                      )
    #这是在模板内的代码
    这是book中模板渲染的文件 <br>
    你好 {{ name }} 今年 {{ age }} <br>
    函数对象:{{ hello }} <br>
    类方法:{{ fruits_say }} <br>
    list:{{ list }} <br>
    list的元素 : {{ list.1 }} <br> #用点的方法来获取元素
    字符串的元素: {{ name.2 }} <br>
    字典: {{ dict }} <br>
    字典的元素: {{ dict.a }} <br>

    #模板变量使用规则
    #1、语法:{{ 变量名 }}
    #2、命名由字母和数字及下划线组成,不能有空格和标点符号
    #3、可以使用字典、模型、方法、函数、列表
    #4、不要和Python或者django关键字重名
    #5、变量和查找
    
    #注:
    #1、如果data是一个字典,name访问data.items将会访问data这个字典的key为items的值,而不会访问字典的items方法
    #2、点在模板渲染时有特殊的含义,变量名中点表示查找

    三、过滤器

    #过滤器
    #作用:对变量进行过滤。在真正渲染出来之前,过滤器会根据功能处理好变量,然后得出结果后再替换掉原来的变量展示出来
    
    {{ fruits|lower|capfirst }}  #中间的管道符
    #作用:管道符号进行链式调用,比如实现一个功能,先把所有字符变成小写,把第一个字符转换为大写
    
    {{ fruits|cut:"" }}#使用参数:
    #过滤器可以使用参数,在过滤器名称后面使用冒号,在加上参数,比如要把一个字符串中的所有空格去掉,则可以使用cut过滤器
    ls = ['x','y','z']
    dc = {'a':1,'b':2}
    def hello():
        return 'GGGG'
    class Fruits:
        def __init__(self,name,color):
            self.name = name
            self.color = color
        def say(self):
            return 'hehehehe'
    ap=Fruits('apple','red')
    
    def book_index2(request,xx):
        test = 'THIS IS A PIPITA'
        return render(request,'book/index.html',
                      context={
                          'test':test,
                          'list':ls,
                          'time':datetime.datetime.now,
                          'html':'<h1>hello django</h1>',
                          'float':3.15155515145,
    
                      }
    <body>
    test原版:   {{ test }} <br>
    小写:   {{ test|lower }}  <br>
    去掉空格: {{ test|cut:' ' }} <br>
    首字母大写: {{ test|capfirst }}  <br>
    添加:   {{ test|add:'asd' }} <br>
    
    如果变量不存在则输出默认值: {{ xxxx|default:test }} <br>
    如果变量为None则输出默认值: {{ xxxx|default_if_none:test }} <br>
    
    取列表的第一个值: {{ list|first }}   <br>
    取列表的最后一个值: {{ list|last }} <br>
    切割列表(左闭右开):{{ list|slice:'1:' }} <br>
    
    字符串每个元素都以某个元素拼接: {{ test|join:' ' }} <br>
    字符串长度:{{ test|length }} <br>
    确认字符串长度是否为指定的值: {{ test|length_is:15 }} <br>
    
    根据后面给的参数,截断字符,如果超过了用...来表示(包括...在内共计数量): {{ test|truncatechars:10 }} <br>
    根据给的参数,以单词为单位截断字符(不包括...):{{ test|truncatewords:2 }} <br>
    
    日期时间值:{{ time|date:'Y/m/d/H:i:s' }} <br>
    时间值: {{ time|time:'h:i:s' }} <br>
    
    html原版: {{ html }} <br>
    去除html标签: {{ html|striptags }} <br>
    实现html标签转义: {{ html|safe }} <br>
    
    浮点数原版:{{ float }} <br>
    浮点数初始化(保留两位小数): {{ float|floatformat:2 }} <br>
    
    
    </body>

      date和time过滤器格式

  • 相关阅读:
    c++ 动态判断基类指针指向的子类类型(typeid)
    qt在GUI显示时,将调试信息输出到控制台的设置
    Qt库版查询
    Qt动态库静态库的创建、使用、多级库依赖、动态库改成静态库等详细说明
    ICMP timestamp 请求响应漏洞
    linux 防火墙 ufw使用
    MySQL--binlog和relay log的生成和删除
    SSD 相关基础知识
    python36--将数据保存为excel
    MySQL 5.7并发复制和mysqldump相互阻塞引起的复制延迟
  • 原文地址:https://www.cnblogs.com/xuchengcheng1215/p/9335231.html
Copyright © 2011-2022 走看看