自定义过滤器
1、确认app已在setting中进行注册;
2、在app模板下创建名为templatetags的模板(切记名字一定不能改,只能是templatetags);
3、在模板下创建任意名称的.py文件;
4、在刚刚创建的.py文件中定制过滤器
-具体语法
from django.template import Library register = Library() @register.filter(name='rule')
# 最多包含两个参数 def rule(value, before): # 将before替换为~ return value.replace(before, '~')
5、编辑视图函数时,将value传递给模板文件
def index(request): return render(request, 'one.html', {'value':'Hello, dandan!'})
6、在模板页面中使用自定义过滤器
<p style="color: red"> <b> {% load my_tag %} {{ value|rule:'!' }} </b> </p>
自定义标签
自定义标签跟自定义过滤器的步骤一样,只是定义的形式有点不一样(自定义标签,返回当前格式化时间)
# extra_tags.py # 自定义标签,格式化返回当前时间 @register.tag(name='current_time') # 解析器 def do_current_time(parse, token): # parse解析器对象,token被解析的对象,包含标签的名字和格式化的格式 try: tag_name, format_string = token.split_contents() except: raise template.TemplateSyntaxError('syntax') return CurrentNode(format_string[1:-1]) # 传入模板中的节点类 import datetime class CurrentNode(template.Node): def __init__(self, format): self.format_string = str(format) # 把当前时间格式化后返回 def render(self, context): now = datetime.datetime.now() return now.strftime(self.format_string)
在模板中使用
{% current_time "%Y-%m-%d %H:%M:%S" %}