1.模板路径的查找
-
查找顺序(两种位置)
-
首先查找 settings.py 中的TEMPLATES的'DIRS'
-
当'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变量
-
-
模板变量的解析规则
-
计算变量,将其替换为结果
-
遇到点(.)的时候,按以下顺序查找
-
字典键值查找
-
属性或方法查找
-
数字索引查找
-
-
如果变量为可调用的(函数),则调用它的时候不带参数,调用的结果成为模板的值
-
渲染失败,则返回空
-
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模板引擎默认将变量为这些内容的,在渲染时将标签<>转义回<,>,防止其对模板产生作用
-
利用safe过滤器,可以将信任的变量通过safe过滤器,取消模板引擎的转义
-
4.静态文件 (css,js,images)
-
路径配置
-
STATICFILES_DIRS = [os.path.join(BASE_DIR,static)]
-
STATIC_URL
-
-
静态文件的引入
-
硬编码 通过STATIC_URL
-
-
html文档开头加载static文件夹: {% load static %}
-
link标签的href="{% static '相对路径' %}"
-
-