Django-模板变量及模板过滤器

03模板变量及模板过滤器

1.模板路径的查找

  • 查找顺序(两种位置)

    1. 首先查找 settings.py 中的TEMPLATES的’DIRS’
    2. 当’APP’ = True时 会去INSTALLED_APPS列表中查找 app目录下的模板
  • 模板的位置(两种方案)

    • 当大项目时,集中部署时,模板的位置在项目根目录下
    • 当app可以复用的时候,给多个项目使用,模板的位置在app目录下
  • 方案1时,为什么在templates文件夹下还要建立app文件夹?

    • 按照顺序查找,找到一个符合的模板就返回

    • 所以为了防止不同app中同名模板的覆盖

2.模板变量

  • 静态页面,动态页面
    • 不随时间改变,不随客户端不同而改变的页面为静态页面,不存在交互
    • 随着时间改变,随着客户端改变,访问者改变而改变的页面为动态页面,存在交互
  • 模板变量:在render函数中,可以传递一个变量,将变量的值渲染到模板中(名不能用下划线开头)
    • 在render()中加一个参数context={},传递一个字典,键为模板中引用的名字 ,值为变量名
    • 例如在render函数中传递context={‘now’:now}
    • 则在html模板中则可以引用{{now}},这里的now指的是context中的’now’
    • 对应某个app的某个方法中定义的now变量
  • 模板变量的解析规则
    • 计算变量,将其替换为结果
    • 遇到点(.)的时候,按以下顺序查找
      1. 字典键值查找
      2. 属性或方法查找
      3. 数字索引查找
    • 如果变量为可调用的(函数),则调用它的时候不带参数,调用的结果成为模板的值
    • 渲染失败,则返回空

3.模板过滤器 filter 对模板变量进行操作

  • 常用模板过滤器 语法{{变量 | 过滤器:参数|过滤器:参数|······}},
    • add: 将变量与值相加 首先尝试整数相加,失败后尝试其他可能(字符串拼接,列表拼接)
    • capfirst 首字母大写,值的首位不是字母无效
    • date: 日期格式化,按照格式填充日期 ‘Y年m月d日 H时i分s秒’
      • Y:四位数的年 如1999
      • y:两位数的年 如99
      • m:两位数的月 如01,09
      • n:一位数的月 如 1,9,12
      • d:两位数的日 如01,09,31
      • j:一位数的日 如1,9,31
      • g:12小时制的一位数的小时 如1 ,9,12
      • G:24小时制的一位数的小时 如0 ,8,23
      • h:12小时制的两位数的小时 如01,09,12
      • H:24小时制的两位数的小时 如01,08,23
      • i: 分钟 00 -59
      • s: 秒 00-59
    • time 时间格式化,按照格式填充时间,只有时分秒
    • default: 变量渲染失败时,返回default的参数,注意:变量本来就返回’'时,也会返回参数
    • first 返回列表的第一个元素
    • last 返回列表的最后一个元素
    • slice:’ : : ’ 返回列表的切片
    • join:’ ’ 字符串拼接
    • floatformat:小数点位数 浮点数格式化,不指定则默认保留一位小数
    • length 返回字符串或列表的长度
    • length_is:number 返回布尔值,列表的长度是否为number
    • lower 字符串全部小写
    • upper 字符串全部大写
    • title 所有空格隔开d的单词首字母大写
    • safe 关闭模板引擎对变量(html,css,js)的自动转义,使得标签有效
  • xss (跨域脚本攻击)
    • 为了防止变量作为标签语言(html,css,js)对网页进行跨域脚本攻击,django模板引擎默认将变量为这些内容的,在渲染时将标签<>转义回&lt,&gt,防止其对模板产生作用
    • 利用safe过滤器,可以将信任的变量通过safe过滤器,取消模板引擎的转义

4.静态文件 (css,js,images)

  1. 路径配置

    • STATICFILES_DIRS = [os.path.join(BASE_DIR,static)]
      
    • STATIC_URL

  2. 静态文件的引入

    1. 硬编码 通过STATIC_URL
    2. 模板标签动态引入,此时无论STATIC_URL为什么都不影响,可以隐藏路径
      1. html文档开头加载static文件夹: {% load static %}
      2. link标签的href="{% static ‘相对路径’ %}"
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值