Django自定义过滤器及标签

自定义的引入:
内置函数>>>>>>>>>>>>>>>自定义函数
内置模块>>>>>>>>>>>>>>>自定义模块
内置过滤器>>>>>>>>>>>>>>自定过滤器
内置标签>>>>>>>>>>>>>>>自定义标签
关于自定义:
目前最最重要的就是HOW掌握自定义的规则!!!



文件路径配置:



注意:templatetags这个目录名字是固定的,而里面的模块名是自定义的.
目录结构:



注册自定义过滤器:
django.template.Library.filter()
1.Library.filter()方法需要两个参数:

a. 过滤器的名称(一个字符串对象)
b. 编译的函数 – 一个Python函数(不要把函数名写成字符串)
2.可以把register.filter()用作装饰器;
3.没有声明 name 参数,Django将使用函数名作为过滤器的名字。

from django import template
import datetime
register = template.Library()

@register.filter
def lowers(value):
    return value.lower()

# register.filter('lowers',lowers)

@register.filter('mucut')
def my_cut(value,vie):
    return value.replace(vie,'***')
@register.simple_tag
def current_time():
    format_string = '%Y/%m/%d %H:%M:%S'
    return datetime.datetime.now().strftime(format_string)
{% load static %}
{% load common_test %}
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>电影首页</title>
</head>
<body>
这是电影首页<br>

内置过滤器:{{ str|lower }}<br>
自定义过滤器:{{ str|lowers }}<br>
内置的过滤器:{{ str|cut:' ' }}<br>
自定义的过滤器:{{ str|mucut:'o' }}<br>
</body>
</html>

自定义标签:
简单标签django.template.Library.simple_tag()
包含标签django.template.Library.inclusion_tag()
tag()方法有两个参数:

  1. 模板标记的名称 - 字符串。 如果省略,将使用编译函数的名称。
  2. 编译的函数 – 一个Python函数(不要把函数名写成字符串)
    与过滤器注册一样,也可以将其用作装饰器。
    自定义包含标签的例子:
    包含标签的功能是可以通过渲染另外一个模板来显示一些数据.
    例如很多地方都可能会用到下面这几行代码,除了choices这个变量不一样之外,其他的都是格式都一样时,那么我们就可以把这部分代码封装在一个包含标签中.
<ul>
    {% for i in choices %}
        <li>{{ i }}</li>
    {% endfor %}
</ul>
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容