使用前提
- 首先在app目录下创建
templatetags
- 注:此文件夹名不可写错
- 在此文件夹下创建,自定义过滤器及标签的文件
- 激活此app或将此文件夹作为app注册
自定义过滤器
-
使用前需要导入和实例化对象
from django import template register = template.Library() #实例化对象
-
使用声明所写函数
@register.filter() #写括号在括号内写想要的名字 若不写使用函数名
-
编写函数达到自己的目的
#传入数据进行排序并返回结果 @register.filter def my_sor(value): a = sorted(value) return a #重新取名为 myup @register.filter('myup') def my_upper(value): return value.upper() #传参数 @register.filter def my_cut(value,arg): return value.replace(arg,'B')
-
在模版中使用
- 在需要使用的地方使用
{% load 自己所写文件名 %}
- 在需要使用的地方使用
自定义标签
#自定义标签
import datetime
@register.simple_tag #可在括号内另取名
# @register.simple_tag() #可在括号内另取名
def current_time1():
Time_str = '%Y-%m-%d, %H:%M:%S'
return datetime.datetime.now().strftime(Time_str)
@register.simple_tag
def current_time2(Time_str): #使用视图传来的参数
return datetime.datetime.now().strftime(Time_str)
@register.simple_tag()
def add(a,d):
c = a+d
return c
@register.simple_tag(takes_context=True)#允许使用上下文
def cuettr3(context):
Time_str = context.get('Time_str') #通过视图获取到键得到值
return datetime.datetime.now().strftime(Time_str)
@register.inclusion_tag('show_tag.html')
def show_restag(): #此为自定义的包含标签
li = ['wed','c++','python','java'] #操作后台数据
return {'choicse':li} #返回给show_tag.html里的字典对像
@register.inclusion_tag('show_tag.html')
def show_restag1(li):
return {'choicse':li} #操作视图里传来的数据
@register.inclusion_tag('show_tag.html',takes_context=True)
def show_restag2(context):
date = context.get('li') #操作上下文
# return date
return {'choicse':date}