模板变量,过滤器,静态文件的引用

  上次我们初始模板,能够将模板渲染出来,这次我们将学会如何给模板传参,模板变量如何解析,以及如何将css等静态文件引用成功。

  • 模板路径查找
  • 模板变量介绍
  • 模板变量解析规则
  • 模板过滤器
  • 静态文件引用

1、模板路径查找

   查找顺序

     模板路径的查找,先从DIRS里查找,再从INSTALLED_APPS里面从上到下查找,因此templates的优先级要比APP下面templates的优先级高

    注:APP下面templates的名称不能改变,否则就查找不到

  为什么在templates文件夹下创建APP类

     因为同名的HTML会很多,而在django中,只要找到一个符合的模板,就返回,所以建APP,方便管理,也防止被覆盖。

    


2、模板变量介绍

   静态页面:随着时间、交互页面是不变的。

   动态页面:随着时间、交互页面是变化的。

  rander:动态的将模板渲染出来

  模板变量

  命名:不能以下划线开头,不能用空格和标点符号,不能跟Python关键字相同。

  语法:context中传入字典

now=datetime.now()                                   #now是datetime类的一个实例,然后返回的是print这个实例
return render(request,'student/index.html',
context={
'now' : now
})

    在模板中使用变量:{{ 里面写key值 }}      变量的值可以是任何的数据类型

<h3>当前时间{{ now }}</h3>
记得上传,成功即可访问

3、模板变量解析规则

   (1)计算变量,将其替换为结果,

·  (2)遇到点 . 时,按以下顺序查找

      1、字典键值查找

      2、属性或方法查找

      3、数字索引查找

   (3)如果结果是可调用的,则调用它时不带参数。调用的结果成为模板的值。

    **如果渲染失败则返回空

  下面看一些例子吧

设各种类型变量并渲染

def new(request):
now=datetime.now()
ls=[1,3,5,7,9,33]
gk={'name':'job','age':19,'sex':'male'}
def func():
return '我是一个函数'
cn=(22,55,66)
tp='往后余生,全都是你'
return render(request,'student/index.html',
context={
'now' : now,
'ls':ls,
'gk':gk,
'fun':func,
'cn':cn,
'tpo':tp
})

模板使用变量:

<h1>欢迎来到web前端</h1>
<h1>我是studentAPP里面的</h1>
<h3>当前时间{{ now }}</h3>
<h3>我是字典:{{ gk }}</h3>
<h3>我是字典里的值:{{ gk.name }}</h3>
<h3>我是列表里的一个值:{{ ls.3 }}</h3>
<h3>我是函数 : {{ fun }}</h3>
<h3>我是元组里的值 : {{ cn.0 }}</h3>
<h3>我是字符里的值 : {{ tpo }}</h3>

访问结果:


4、模板过滤器()

  作用:对变量进行过滤。在真正渲染之前,过滤器会根据功能处理好变量,然后的出结果后再替换掉原来变量展示出来。

        {{   变量 | lower }}        过滤器名写竖杠 | 后面

  管道符号课进行链式调用,比如实现一个功能,先把所有字符变成小写,把第一个字符转换成大写。

      {{变量 | lower | capfirst}}

  使用参数:过滤器可以使用参数,在过滤器后面使用冒号‘:’再加上参数,比如要把一个字符串中所有的空格去掉,可以使用cut过滤器。

   {{变量 | cut:“ ”}}                        

   {{变量 | 过滤器 :“参数”}}

   一些常用的过滤器:

(1)add   字符串相加,数字相加,列表相加,如果失败,返回空字符

          {{ value | add: "2"}}    将value的值增加2

 (2)addslashes

           {{ value | addslashes }}     在value中的引号前增加反斜线
           
(3)capfirst        首字母大写
            
(4)cut
            从给定value中删除所有arg的值
 (5)date
             将日期格式数据按照给定的格式输出
(6)default
             {{ value | default: "nothing" }},例如,如果value是“”,那么输出将是nothing
             如果value的意义是False,那么输出使用缺省值
(7)default_if_none
             {{ value | default_if_none:"nothing" }},例如,如果value是None,那么输出将是nothing
             如果value是None,那么输出将使用缺省值

(8)first 返回列表中的第一个值

(9)join       使用形式:{{ value | join:"arg"}},如果value是['a','b','c'],arg是'//'那么输出是a//b//c       意义:使用指定的字符串连接一个list


(10)last 返回列表中的最后一个值

(11)length 返回value的长度(12)length_is {{ value | length_is:"arg"}} 返回True,如果value的长度等于arg的时候,例如:如果value是['a','b','c'],arg是3,那么返回True
意义:显示的文本,带有行数

(13)lower
将一个字符串转换成小写形式

(14)safe 使用形式:{{value | safe}} 意义:当系统设置autoescaping打开的时候,该过滤器使得输出不进行escape转换
(15)striptags 删除value中的所有HTML标签 
(16)title
        转换一个字符串成为title格式(17)truncatewords
       {{value | truncatewords:2}}
       将value切成truncatewords指定的单词数目
(18)time 格式化时间

5、静态文件引用

 路径的配置

    在settings.py中,

        找到   STATIC_URL = '/static/'
输入 STATICFILES_DIRS=[os.path.join(BASE_DIR,'static')]

    在项目中,创建static文件夹,专门放静态文件,

    然后,建APP文件夹,在APP文件夹内,建css、img、js文件夹来分类放置静态文件。

静态文件的引入

way1:硬编码

    硬编码:通过STATIC_URL       不推荐使用

    

  <link rel="stylesheet" href="/static/student/css/index.css">

    static为STATIC_URL 的值,可以改变。

    

    student/css/index.css为static文件下的路径。

way2:模板标签(推荐)

  {% load static %}在HTML开头写上
  引用:<link rel="stylesheet" href={% static 'student/css/index.css' %} >

  'student/css/index.css' 为static下的路径。



 模板变量就学习到这里,下节我们学习模板标签,和模板的继承。

猜你喜欢

转载自www.cnblogs.com/bdydrq/p/10429137.html
今日推荐