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在这里的作用是将文本全都变成小写。

注意事项:

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

 

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模板系统的主要内容,如果未能解决你的问题,请参考以下文章

JavaScript 片段在 Django 模板中不起作用

如何在扩展另一个文件的 django 模板中使用带有动态内容的 html 块片段?

Django模板过滤器 - 一行

Django的模板系统

Django的模板系统

如何在Django视图中使用for循环返回每次迭代[关闭]