今日学习目标
- 熟悉模块基础知识点学习
文章目录
学习内容
- 模板语法之过滤器
- 模板语法之标签(类似于流程控制)
- 自定义过滤器、标签、inclusion_tag
- 模板的导入
- 模板的继承
- 测试环境搭建
- ORM查询关键字使用
一、模板语法之过滤器
优点:类似于内置函数
特点:会将|左边的当做过滤器的第一个参数,将右边的当做过滤器第二个参数。
过滤器类似于python的内置函数,用来把视图传入的变量值加以修饰后再显示,具体语法如下
{
{
变量名|过滤器名:传给过滤器的参数 }}
常用内置过滤器
1、default
#作用:如果一个变量值是False或者为空,使用default后指定的默认值,否则,使用变量本身的值,如果value=’‘则输出“nothing”
{
{
value|default:"nothing" }}
2、length
#作用:返回值的长度。它对字符串、列表、字典等容器类型都起作用,如果value是 ['a', 'b', 'c', 'd'],那么输出是4
{
{
value|length }}
3、filesizeformat
#作用:将值的格式化为一个"人类可读的"文件尺寸(如13KB、4.1 MB、102bytes等等),如果 value 是 12312312321,输出将会是 11.5 GB
{
{
value|filesizeformat }}
4、date
#作用:将日期按照指定的格式输出,如果value=datetime.datetime.now(),按照格式Y-m-d则输出2019-02-02
{
{
value|date:"Y-m-d" }}
5、slice
#作用:对输出的字符串进行切片操作,顾头不顾尾,如果value=“egon“,则输出"eg"
{
{
value|slice:"0:2" }}
6、truncatechars
#作用:如果字符串字符多于指定的字符数量,那么会被截断。截断的字符串将以可翻译的省略号序列(“...”)结尾,如果value=”hello world egon 嘎嘎“,则输出"hello...",注意8个字符也包含末尾的3个点
{
{
value|truncatechars:8 }}
7、truncatewords
#作用:同truncatechars,但truncatewords是按照单词截断,注意末尾的3个点不算作单词,如果value=”hello world egon 嘎嘎“,则输出"hello world ..."
{
{
value|truncatewords:2 }}
8、safe
#作用:出于安全考虑,Django的模板会对HTML标签、JS等语法标签进行自动转义,例如value="<script>alert(123)</script>",模板变量{
{ value }}会被渲染成<script>alert(123)</script>交给浏览器后会被解析成普通字符”<script>alert(123)</script>“,失去了js代码的语法意义,但如果我们就想让模板变量{
{ value }}被渲染的结果又语法意义,那么就用到了过滤器safe,比如value='<a href="https://www.baidu.com">点我啊</a>',在被safe过滤器处理后就成为了真正的超链接,不加safe过滤器则会当做普通字符显示’<a href="https://www.baidu.com">点我啊</a>‘
{
{
value|safe }}
内置过滤器safe用来前后端取消转义(前端代码并不一定非要在前端写,也可以在后端写好,传递给前端页面)
前端取消转义:|safe
后端取消转义:要先导一个模块:
from django.utils.safestring import mark_safe
sss = "<a href='www.baidu.com'>渡我不渡她</a>"
res = mark_safe(sss)
# 再把这个res传到前端
<p>{
{
res }}</p>