Python学习笔记-Day61和Day62-Django模板系统

主要内容:

一、模板语言-变量

二、模板语言-过滤器

三、模板语言Tags

四、csrf-token

五、母板

六、组件

七、静态文件相关

八、自定义tag

扫描二维码关注公众号,回复: 3899917 查看本文章

一、Django模板语言-变量

1、语法:{{ 变量名 }}

2、命名规则:所有的数字、字母、下划线的自由组合

3、点(.)的作用

  ① 字典查询  {{ dic.key }}

  ② 属性、方法查询  {{ obj.name }}

  ③ 索引查询  {{ list1.0 }}

二、Django模板语言-过滤器filter

过滤器的作用是改变变量的显示

1、语法:{{ 变量|filter_name:'参数' }}

  ① 过滤器支持链式操作,一个过滤器的输出可以作为另一个过滤器的输入

  ② 过滤器可以要接收参数

  ③ 过滤器中的参数是空格的话要用引号包起来

  ④ 管道符|左右两边没有空格

2、Django中提供的内置的过滤器大概有60多中,列举以下几种

① default

如果一个变量是false或空,就设置成默认的值

{{ value|default:"nothing" }}

② length

返回变量的长度,作用于字符串和列表

{{ value|length }}

③ filesizeformat

将值格式化成一个“人类可读”的文件尺寸

{{ value|filesizeformat }}

如果value的值是123456789,输出的将是117.7MB

④ slice

切片,和python中的切片是一样的,顾头不顾尾

{{ value|slice:"1:-1"}}

⑤ date       ******

格式化时间

将一个datetime格式的时间格式化成我们想要的格式

{{ now|date:"Y-m-d H:i:s"}}

⑥ safe

为了安全,Django的模板中会对HTML标签和JS等语法标签自动转义成普通的字符串。

但有时,我们不需要这些字符串被转义,就可以通过safe过滤器告诉Django这段代码是安全的不需要转义

value = ‘<a href="#">点我</a>’

{{ value|safe }}

⑦ truncatechars

如果字符串中的字符多于指定的数量,那么会被截断,截断的字符将以可翻译的省略号序列(...)结尾,每个省略号代表一个字符

{{ value|truncatechars:9}}   # 包括三个省略号在内,保留9个字符

⑧ truncatewords

按照空格进行截断,因为中文不以空格作为单词的分割,所以这个过滤器对中文没有什么用处

被截断的部分会以省略号(...)结尾

⑨ cut

移除掉指定的字符

{{ value|cut:'a'}}

移除掉value中的a字符

⑩ join

使用字符串连接列表,和python中的join一样

{{ list|join:'&'}}

⒒ timesince

{{ 以前的时间|timesince:之后的时间}}

计算之前的时间和之后的时间的时间差,如果参数省略,就是计算以前的时间和现在的时间差

最小的单位是分钟,如果以前的时间>之后的时间,返回“0分钟”

⒓ timeutil

{{ 以后的时间|timeutil:之前的时间}}

于timesince类似,计算以后的时间和之前的时间差

三、自定义过滤器

自定义过滤器只是一个带一个或两个参数的Python函数

例如过滤器{{ value|foo:"bar" }}是将value和bar作为参数传递给foo,bar这个参数可以省略

1、自定义filter的步骤

① 在app下新建一个Python package 名叫templatetags(一定要叫这个名)

② 在templatetags下新建一个py文件(名字随便取)my_filter.py

③ 在py文件中写函数,实现自定义的filter功能

④ 告诉Django框架多了一个自定义的filter

  from django import template

  register = template.Library()

  @register.filter(name='调用时使用的filter名字,可以和函数名不一样')

  def cut(value,arg):

    return value.replace(arg, '')

2、使用自定义的filter

① 在HTML文件中导入py文件

{% load my_filter %}

② 重启Django项目

③ 按照普通的使用filter的方法调用

四、Tags(for、if、with)

1、for循环

① 普通的for循环

{% for user in user_list %}

{% endfor %}

for循环可用的一些参数 

 forloop.counter

猜你喜欢

转载自www.cnblogs.com/tian-tian/p/9897516.html