Django模板系统
Posted xzqpy
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Django模板系统相关的知识,希望对你有一定的参考价值。
Django官方文档
可见https://docs.djangoproject.com/en/1.11/ref/templates/builtins/#std:templatetag-for
和python一样,Django也有自己的语法
常用语法:{{ XXX}},{% xxx %}
举个例子
def template_test(request): l = [11, 22, 33] d = {"name": "alex"} class Person(object): def __init__(self, name, age): self.name = name self.age = age def dream(self): return "{} is dream...".format(self.name) Alex = Person(name="Alex", age=34) Egon = Person(name="Egon", age=9000) Eva_J = Person(name="Eva_J", age=18) person_list = [Alex, Egon, Eva_J] return render(request, "template_test.html", {"l": l, "d": d, "person_list": person_list})
然后在 template_test.html 可以引用这个变量
{# 取l中的第一个参数 #} {{ l.0 }} {# 取字典中key的值 #} {{ d.name }} {# 取对象的name属性 #} {{ person_list.0.name }} {# .操作只能调用不带参数的方法 #} {{ person_list.0.dream }}
Filters(过滤器)
在Django的模板语言中,通过使用 过滤器 来改变变量的显示。
过滤器的语法: {{ value|filter_name:参数 }}
使用管道符"|"来应用过滤器。
例如:{{ name|lower }}会将name变量应用lower过滤器之后再显示它的值。lower在这里的作用是将文本全都变成小写。
注意事项:
- 过滤器支持“链式”操作。即一个过滤器的输出作为另一个过滤器的输入。
- 过滤器可以接受参数,例如:{{ sss|truncatewords:30 }},这将显示sss的前30个词。
- 过滤器参数包含空格的话,必须用引号包裹起来。比如使用逗号和空格去连接一个列表中的元素,如:{{ list|join:‘, ‘ }}
- ‘|‘左右没有空格没有空格没有空格
Django的模板语言中提供了大约六十个内置过滤器。
我们简单介绍下里面常用的过滤器。
default
如果value没有值 即为空,则赋值为nothing
{{ value|default:"nothing"}}
length
返回值的长度,作用于字符串和列表。
{{ value|length }}
返回value的长度,如 value=[‘a‘, ‘b‘, ‘c‘, ‘d‘]的话,就显示4.
filesizeformat
将值格式化为一个 “人类可读的” 文件尺寸 (例如 ‘13 KB‘
, ‘4.1 MB‘
, ‘102 bytes‘
, 等等)。例如:
{{ value|filesizeformat }}
如果 value 是 123456789,输出将会是 117.7 MB。
slice
切片
{{value|slice:"2:-1"}}
如果value 是一个列表的话
如 value=[‘a‘, ‘b‘, ‘c‘, ‘d‘]的话,就显示
[‘c‘]
safe
不做介绍,一句话让 字符串变为 HTML 代码
我们简单介绍下里面常用的模板
comment
?
注释
{% comment "Optional note" %}
adasdasdasasdasd
{% endcomment %}
truncatechars
一定字符串之后显示...例如我们常见网页的详解
{{ value|truncatechars:9}}
在介绍block之前我们先介绍下母版
cut
移除value中所有的与给出的变量相同的字符串
{{ value|cut:‘ ‘ }}
切掉空格
join
每个value字符串后拼一个内容
block
此模块可以用来继承母版
以上是关于Django模板系统的主要内容,如果未能解决你的问题,请参考以下文章