Django框架基础知识03-模板变量及模板过滤器
模板变量及模板过滤器.
1.模板路径的查找
-查找顺序 1.尝试,在app目录下存放模板. -两种方案 1.app项目文件夹下存放. 2.templates文件夹下分类存放.
首先查找项目settings里的DIRS,可以定义多个路径,这是个列表.
APP_DIRS:True定义在注册app中去找.在INSTALLED_APPS列表中找,包括app下面的tem
例如:在INSTALLED_APPS中加入
teacher.apps.TeacherConfig,
或者只定teacher,
在app文件夹下面的templates文件夹名字不能变.
在app可以复用的时候可以将主要模板放在app文件夹里.
-为什么要在tempaltes里面再套一层
只要找到一个符合的模板,就返回
模板路径配置总结
在配置文件setting.py中找到TEMPLATES设置来配置。
这是一个设置选项的列表,模板大都包含两项通用设置;两种方式配置模板:
第一种: DIRS 定义一个目录列表,模板引擎按列表顺序搜索这些目录以查找模板源文件。将templates放在主项目目录下.
第二种: APP_DIRS告诉模板引擎是否应该进入每个已安装的应用中查找模板,值为True则模板会去安装了的app下面的templates文件夹查找模板。。所以我们也可以在每个app的里面创建模板目录templates存放模板,这种方式需要将这个app添加到setting.py文件的INSTALLED_APPS列表中.
先创建的app文件夹的同名index模板会覆盖掉后面的app的Index模板.
2.模板变量
模板变量的引入:
我们在页面上会看到,谁登录的就会显示谁的信息,那么这个页面上变量是怎样实现的呢?
模板变量使用规则:
1.语法: {{ 变量名 }}
2.命名由字母和数字以及下划线组成,不能有空格和标点符号,不能以下划线开头.
3.可以使用字典、模型、方法、函数、列表
4.不要和python或django关键字重名
5.变量和查找
注:如果变量是一个函数,执行函数并返回结果.
1.如果data是一个字典,那么访问data.items将会访问data这个字典的key名为items的值,而不会访问字典的items方法。
2.点在模板渲染时有特殊的含义。 变量名中点表示查找。
例子:1.app book/views.py文件.
1./templates/book/index.html 文件.
变量的值可以是任何数据类型
-变量的解析规则
各种尝试
1.计算变量,将其替换为结果
2.遇到点(.)的时候,按一下顺序查找:
-1.字典键值查找
-2.属性或方法查找
-3.数字索引查找
3.如果结果是可调用的,则调用它时不带参数。调用的结果成为模板的值.
## 所谓的结果是可调用的,说明变量是个函数,或是个方法 渲染失败返回''
3.模板过滤器 filter
作用: 对变量进行过滤。在真正渲染出来之前,过滤器会根据功能处理好变量,然后得出结果后再替换掉原来的变量展示出来。
语法:{{fruits|lower}}
管道符号进行链式调用,比如实现一个功能,先把所有字符变成小写,把第一个字符转换成大写。
语法:{{fruits|lower|capfirst}}
使用参数:过滤器可以使用参数,在过滤器名称后面使用冒号”:”再加上参数,比如要把一个字符串中所有的空格去掉,则可以使用cut过滤器,
语法如下: {{fruits|cut:" "}}
注意:
使用参数的时候,冒号和参数之间不能有任何空格,一定要紧挨着。
-常用模板过滤器
add 将参数与值相加 首先尝试转换成整数相加,失败,则尝试所有可能,字符串,列表等。{{ value|add:"2" }} capfirst 首字母大写,如果第一个字母不是字母则不起作用。{{ value|capfirst }} date 日期格式化 {{ value|date:"D d M Y" }} time 时间格式化 {{ value|time:"H:i" }} 格式化格式见官方文档:https://docs.djangoproject.com/en/2.1/ref/templates/builtins/#date default 如果变量解析失败,使用给定的默认值。{{ value|default:"nothing" }}(注意如果value是''空字符串,输出将会是'nothing') first 返回列表的第一个元素 {{ value|first }} last 返回列表的最有一个元素 {{ value|last }} slice 返回一个列表的切片 {{ some_list|slice:":2" }} join 连接字符串列表 与str.join(list)一样 {{ value|join:" // " }} floatformat 浮点数格式化 不指定小数位参数,默认保留一个为小数 value Template Output 34.23234 {{ value|floatformat }} 34.2 34.23234 {{ value|floatformat:3 }} 34.232 length 返回字符串或列表的长度 length_is 判断字符串或列表长度是否指定的值,相等返回True {{ value|length_is:"4" }} lower 字符串中的字母都变小写{{ value|lower }} upper 字符串中的字母都变大写{{ value|upper }} safe 关闭变量的自动转义,使html标签生效{{ value|safe }} title 标题化,首字母大写 {{ value|title }} -xss(跨域脚本攻击)
date和time过滤器格式:
过滤器的例子:
关于自动转义
什么是自动转义?
自动转义是将变量的一些特殊字符,比如左箭头(<)、右箭头(>)转义成html代码,这样做的目的是为了处理一些不安全的变量。
<:转义成 & l t;
大于号:转义成& g t;
‘:转义成& # 3 9;
“:转义成& q u o t;
&:转义成& a m p;
xss(跨域脚本攻击)
{{|safe}}取消转义
4.静态文件
静态文件目录:
在项目目录下创建static的目录, 为了区分开各种类型的文件分别创建css,image,js的目录.
静态文件的配置:
在settings.py文件中添加STATICFILES_DIRS
设置静态文件目录路径,同templates。
创建静态文件:
1.创建文件/static/js/myjs.js
2.创建文件/static/css/mystyle.css
3.创建文件/static/image/myimage.jpg
##存入图片
-css -js -图片 -1. 路径配置
- STATICFILES_DIRS
- STATIC_URL
-2. 静态文件的引入
-1. 硬编码 通过 STATIC_URL
-2. 模板标签
STATIC_URL='/static/'设置目录要加上/.
最新文章
- c++中的继承与初始化
- Fuel快速安装OpenStack
- 执行大量的Redis命令,担心效率问题?用Pipelining试试吧~
- 一个c++剧情脚本指令系统
- python获取系统时间
- Android框架浅析之锁屏(Keyguard)机制原理
- struts2+jquery+json集成
- hdu5176(并查集)
- 「NOI2003」逃学的小孩
- ps命令显示uid而不是用户名的解决方法
- https 适配
- (Gorails视频)使用推广链接(params[:ref]),增加注册用户!
- Gazebo: Could not find parameter robot_description on parameter server
- iOS9 &; iOS10 &; iOS11 HTTP 不能正常使用的解决办法
- vue-awesome-swiper插件
- 【BZOJ4553】[Tjoi2016&;Heoi2016]序列 cdq分治+树状数组
- 【Druid】access denied for user &#39;&#39;@&#39;ip&#39;
- mysql编码不统一形成的错误
- Python面试题之Python对象反射、类反射、模块反射
- vim终端复制_不开启xterm_clipboard的解决方式