首页 > 编程语言 > 详细

Django模板语言

时间:2019-05-13 19:42:15      阅读:223      评论:0      收藏:0      [点我收藏+]

只需要记两种特殊符号:

  变量相关的用{{}},

  逻辑相关的用{%%}。

一、变量

当模版系统遇到点("."),它将以这样的顺序查询:

字典查询(Dictionary lookup)
属性或方法查询(Attribute or method lookup)
数字索引查询(Numeric index lookup)

注意事项:

  1. 如果计算结果的值是可调用的,它将被无参数的调用。 调用的结果将成为模版的值。
  2. 如果使用的变量不存在, 模版系统将插入 string_if_invalid 选项的值, 它被默认设置为‘‘ (空字符串) 。
技术分享图片
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})
view中代码:
技术分享图片
{% 取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. ‘|‘左右  没有空格没有空格没有空格

2.1 内置过滤器

#如果一个变量是false或者为空,使用给定的默认值。 否则,使用变量的值。
{{ value|default:"nothing"}}
#返回值的长度,作用于字符串和列表。
{{ value|length }}
#将值格式化为一个 “人类可读的” 文件尺寸 
{{ value|filesizeformat }}
#切片
{{value|slice:"2:-1"}}
#时间格式化
{{ value|date:"Y-m-d H:i:s"}}
#告诉Django这段代码是安全的不必转义【xss攻击】
{{ value|safe}}
#截断超出的字符串,将以可翻译的省略号序列(“...”)结尾
{{ value|truncatechars:9}}
#移除 value中所有的与给出的变量相同的字符串
{{ value|cut:  }}
#使用字符串连接列表
{{ value|str.join(list)}}
#将日期格式设为自该日期起的时间,
{{ blog_date|timesince:comment_date }}
#测量从现在开始直到给定日期或日期时间的时间
例如,如果今天是2006年6月1日,而conference_date是保留2006年6月29日的日期实例,则{{ conference_date | timeuntil }}将返回“4周”。
{{ conference_date|timeuntil:from_date }}

2.2 自定义filter

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

  • 变量(输入)的值 - -不一定是一个字符串
  • 参数的值 - 这可以有一个默认值,或完全省略
#自定义filter代码文件摆放位置:
app01/
    __init__.py
    models.py
    templatetags/        # 在app01下面新建一个package package
        __init__.py
        app01_filters.py      # 建一个存放自定义filter的文件
    views.py

 

# 编写自定义filter
from django import template
register = template.Library()

@register.filter(name="cut")
def cut(value, arg):
    return value.replace(arg, "")


@register.filter(name="addSB")
def add_sb(value):
    return "{} SB".format(value)

 

#模板语言中,使用自定义filter
{# 先导入我们自定义filter那个文件 #}
{% load app01_filters %}

{# 使用我们自定义的filter #}
{{ somevariable|cut:"0" }}
{{ d.name|addSB }}

三、Tags

 

Django模板语言

原文:https://www.cnblogs.com/timetellu/p/10858404.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!