Django基础第七天-模版层

filter
{{}}
    1 变量
        句点符,深度查询(可以点到方法,不要加括号,只能是无参的方法)
    2 过滤器
        <p>date过滤器 {{ now|date:'Y-m-d:H:i:s' }}</p>
        <p>date过滤器 {{ now|date }}</p>
        如果一个变量是false或者为空,使用给定的默认值。否则,使用变量的值。例如:
        <p>default过滤器  {{ ss2|default:'字符串没有值' }}</p>
        <p>default过滤器  {{ ll3|default:'列表没有值' }}</p>
        返回值的长度。它对字符串和列表都起作用
        <p>length过滤器  {{ ll2|length }}</p>
        将值格式化为一个 “人类可读的” 文件尺寸 (例如 '13 KB', '4.1 MB', '102 bytes', 等等)。例如:
        <p>filesizeformat过滤器  {{ file|filesizeformat }}</p>
        <p>filesizeformat过滤器  {{ 1024|filesizeformat }}</p>
        切片操作
        <p>slice过滤器  {{ 'lqzisbig'|slice:'1:9' }}</p>
        如果字符串字符多于指定的字符数量,那么会被截断。截断的字符串将以可翻译的省略号序列(“...”)结尾
        <p>truncatechars过滤器  {{ 'lqzisbigdddddddeee'|truncatechars:9 }}</p>
        <p>truncatewords过滤器:  {{ 'lqz is big and egon is small'|truncatewords:3 }}</p>
        <p>safe过滤器:  {{ ss3|safe }}</p>
            xss攻击:跨站脚本攻击
            {#可以在视图函数里处理#}
            from django.utils.safestring import mark_safe
            ss3=mark_safe(ss3)
        <p>safe过滤器:  {{ ss3|safe }}</p>
        俩参数可以传字符串和数字,具体详见源码
        <p>add过滤器:  {{ 12|add:"3" }}</p>
        <p>add过滤器:  {{ 'eee'|add:"3rrr" }}</p>
        

tag
{% %}
    for :forloop 
        {%for i in ll%}
        #必须再for循环里使用
        {{forloop}}
        #
        {% empty%}}
        {% endfor%}
    if if语句支持 and 、or、==、>、<、!=、<=、>=、in、not in、is、is not判断。
        {%if 条件%}
        {% endif%}
        
    {% with aa=dic.name%}
    {{aa}}
    {%endwith%}


自定义过滤器
    1 先去setting里面把app名字配置上
    2 再app目录下创建一个templatetags模块
    3 写py文件(my_test.py)
    4 from django import template
    5 register=template.Library()
    6 写函数 addstr(用register.filter()装饰)
    7 模板:
    8 {% load my_test %}
    9 {{'lqz'|addstr:'isbig' }}  #最多只能传两个参数
    
 
自定义标签:
    1 先去setting里面把app名字配置上
    2 再app目录下创建一个templatetags模块
    3 写py文件(my_test.py)
    4 from django import template
    5 register=template.Library()
    6 写函数 [email protected]_tag(name='yy')装饰)
        @register.simple_tag(name='yy')
        def my_sum(x,y,z,i):

            return x+y+z+i
    7 模板:
    8 {% load my_test %}
    9 {% yy 12 34 56 78 %}  #以空格做分割,传参数

自定义标签示例:

在app01下创建的templatetags文件夹,里面创建my_test.py文件,文件名可随意更改

from django import template

# 必须用register这个名字,必须一模一样
register = template.Library()


# 接下来开始自定义过滤器
@register.filter(name='abc')
def aaa(x, y):
    return x + y


# 自定义标签
@register.simple_tag(name='ABC')
def my_sum(x, y, z, i):
    return x * y * z * i

在html文件中:

{% load my_test %}
{{ 'lqz'|abc:'isbig' }}
{% ABC 1 2 3 4 %}

{% if 'lqz'|abc:'isbig' %}
    {% ABC 1 2 3 4 %}
{% endif %}
自定义的过滤器,可以放在if判断里,
自定义的标签,不能放在if判断里条件里

猜你喜欢

转载自blog.csdn.net/qq_17513503/article/details/82466788