其他分享
首页 > 其他分享> > Dango之模版系统

Dango之模版系统

作者:互联网

1.模板渲染

可以传列表,字典,对象等

{{ 变量 }}   {% 逻辑 %} -- 标签

urls.py

path('login/', views.login),

views.py

def login(request):
    name = 'zbb'
    return render(request,'login.html',{"name":name})

html

{{ name }}

2.万能的点

<h4>列表:{{ l.2 }}</h4>
<h4>字典:{{ dic.name }}</h4>
<h2>字典:{{ d1.items }}</h2> #循环取值
<h4>日期:{{ date.year }}</h4>
<h4>对象:{{ obj.p }}</h4>
 #如果调用的方法需要传参,sorry用不了

3.过滤器(内置)

在Django的模板语言中,通过使用 过滤器 来改变变量的显示。

过滤器的语法

{{ value|filter_name:参数 }}

使用管道符"|"来应用过滤器。

注意事项:

  1. 过滤器支持“链式”操作。即一个过滤器的输出作为另一个过滤器的输入。
  2. 过滤器可以接受参数,例如:{{ sss|truncatewords:30 }},这将显示sss的前30个词。
  3. 过滤器参数包含空格的话,必须用引号包裹起来。比如使用逗号和空格去连接一个列表中的元素,如:{{ list|join:', ' }}
  4. '|'左右没有空格

1.default

如果一个变量是false或者为空,使用给定的默认值。 否则,使用变量的值。

{{ value|default:"nothing"}}

2.length

返回值的长度,作用于字符串和列表。

{{ value|length }}
value=['a', 'b', 'c', 'd']的话,就显示4.

3.fIlesizeformat

将值格式化为一个 “人类可读的” 文件尺寸 (例如 '13 KB', '4.1 MB', '102 bytes', 等等)

{{ num|filesizeformat }}

4.slice

切片,如果 value="hello world",还有其他可切片的数据类型

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

5.date

格式化,如果 value=datetime.datetime.now()

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

6.safe

Django的模板中在进行模板渲染的时候会对HTML标签和JS等语法标签进行自动转义,原因显而易见,这样是为了安全,django担心这是用户添加的数据,比如如果有人给你评论的时候写了一段js代码,这个评论一提交,js代码就执行啦,这样你是不是可以搞一些坏事儿了,写个弹窗的死循环,那浏览器还能用吗,是不是会一直弹窗啊,这叫做xss攻击,所以浏览器不让你这么搞,给你转义了。但是有的时候我们可能不希望这些HTML元素被转义,比如我们做一个内容管理系统,后台添加的文章中是经过修饰的,这些修饰可能是通过一个类似于FCKeditor编辑加注了HTML修饰符的文本,如果自动转义的话显示的就是保护HTML标签的源文件。为了在Django中关闭HTML的自动转义有两种方式,如果是一个单独的变量我们可以通过过滤器“|safe”的方式告诉Django这段代码是安全的不必转义。

value = "<a href='#'>点我</a>" 和 value="<script>alert('123')

标签:name,模版,系统,value,转义,HTML,过滤器,Django,Dango
来源: https://www.cnblogs.com/zdqc/p/11638144.html