自定义的引入:
内置函数>>>>>>>>>>>>>>>自定义函数
内置模块>>>>>>>>>>>>>>>自定义模块
内置过滤器>>>>>>>>>>>>>>自定过滤器
内置标签>>>>>>>>>>>>>>>自定义标签
关于自定义:
目前最最重要的就是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()方法有两个参数:
- 模板标记的名称 - 字符串。 如果省略,将使用编译函数的名称。
- 编译的函数 – 一个Python函数(不要把函数名写成字符串)
与过滤器注册一样,也可以将其用作装饰器。
自定义包含标签的例子:
包含标签的功能是可以通过渲染另外一个模板来显示一些数据.
例如很多地方都可能会用到下面这几行代码,除了choices这个变量不一样之外,其他的都是格式都一样时,那么我们就可以把这部分代码封装在一个包含标签中.
<ul>
{% for i in choices %}
<li>{{ i }}</li>
{% endfor %}
</ul>