模板变量及过滤器
模板路径的总结
-
在配置文件 setting.py 中找到 TEMPLATES 设置来配置。这是一个设置选项的列表,模板大都包含两项通用设置;两种方式配置模板:
- 第一种:DIRS 定义一个目录列表,吗,模板引擎按列表顺序搜索这些目录以查找模板源文件。将 templates 放在主项目目录下;
- 第二种:APP_DIRS 告诉模板引擎是否应该进入每个已安装的应用中查找模板,值为 True 则模板会去安装了的APP 下面的 templates 文件夹查找模板。所以我们也可以在每个 app 的里面创建模板目录 templates 存放模板,这种方式需要将这个 app 添加到 setting.py 文件的 INSTALLED_APPS 列表中
模板变量
我们经常在页面会上看到,谁登陆的就会显示谁的信息,那么这个页面上的显示的信息是怎么实现的呢? 其实就是你登录之后,后台传送数据到前端的模板 ,由模板去进行展示。
举个例子,在 一个 book app 的 views.py 中 定义一个 视图函数,并配置对应的路由。视图函数渲染 book_index.html 这个页面,并向页面传递数据 一个字典 (contex 传递上下文)
通过后台传送的数据,我们可以让其显示到我们的模板中
然后去访问这个页面,我们可以得到我们想展示的数据
通过这个例子我们知道了模板变量的作用,就是后端传送的数据,前端可以去进行使用
模板变量的使用规则
既然知道了模板变量的作用,那我们就来了解一下模板变量的使用规则
- 语法:{{ 变量名 }}
- 命名由字母和数值以及下划线组成,不能有空格和标点符号
- 可以使用字典、模型、方法、函数、列表
- 不要和 python 和 Django 关键字重名
注意:如果 data 是一个字典,那么访问 data.items 将会访问 data 这个字典的 key 名为 items 的值,而不会访问字典的 items 方法;点在模板渲染时有特殊的含义。变量名中点代表查找。
模板变量的例子
首先在 views.py 中定义 一个函数、类、字典、列表、元祖、字符串
然后定义一个 index5 的视图函数,并将上面定义对象通过 context 传递到模板中
模板使用后台传送的数据
访问页面,显示结果
模板过滤器
模板过滤器就是变量进行过滤,在真正渲染出来之前,过滤器会根据功能处理好变量,然后得出结果后再替换掉原来的变量展示出来。
语法:{{ st | lower }}
管道符进行链式调用,比如实现一个功能,先把所有字符变成小写,把第一个字符转化成大写。
语法:{{st|lower|capfirst}}
使用参数:过滤器可以使用参数,在过滤器名称后面使用冒号 :
再加上参数,比如要把一个字符串中所有的空格去掉,则可以使用cut过滤器,
语法:{{ st | cut:" "}}
注意:使用参数的时候,冒号和参数之间不能有任何空格,一定要紧挨着。
常用的模板过滤器
date 和 time 过滤器格式
关于自动转义
自动转义时将变量的一些特殊字符,比如左箭头(<),右箭头(>)转移成 html 代码,这样做的目的是为了处理一些不安全的变量。
<
:转义成<
;>
:转义成>
;‘
:转义成'
;“
:转义成"
;&
:转义成&
;
后台向前端传递数据时,会将变量的一些特殊字符转移成 html 代码,虽在页面可正常显示,但查看网页源代码时就变成 html 代码 可以 用 过滤器 safe
关闭变量的自动转义
静态文件
Django 静态文件的存放,可以在项目目录下创建 static 目录,为了区分开各种类型的文件分别创建 css,image,js 的目录。
创建好后,需在 setting.py 文件中添加 STATICFILES_DIRS 设置静态文件目录路径,同 templates。
创建文件 /static/js/myjs.js
创建文件 /static/css/mystyle.css
创建文件 /static/image/myimage.jpg
静态文件引用
先加载静态文件,在引用对应的静态文件。