1.首先在app中创建templatetags目录(注意必须使用该名字,否则系统找不到自定义的标签),然后创建python文件common_extrgs.py.
common_extrgs.py:
from django import template #创建template.Library()实例register = template.Library() #使用@register.filter()注册成自定义过滤器@register.filter()def mycut(value,arg): return value.replace(arg,"---")## register.filter(‘mycut‘,mycut) from django.template.defaultfilters import stringfilter #自定义过滤器,并使用stringfilter装饰器过滤成字符型@register.filter@stringfilterdef mylower(value): return value.lower() from datetime import datetime #简单标签@register.simple_tag(takes_context=True)def current_time(context): tm = context[‘format_string‘] return datetime.now().strftime(tm) #包含标签@register.inclusion_tag(‘book/show_tag.html‘,takes_context=True)def show_results(context): tm = context[‘li‘] tm2 = context[‘l2‘] return {‘choices‘:tm + tm2} #分配标签@register.assignment_tag(takes_context=True)def current_time1(context): tm = context[‘format_string‘] return datetime.now().strftime(tm)
2.包含标签中使用register.inclusion_tag把show_tag.html文件包含进来,
show_tag.html内容如下:
<ul> {% for i in choices %} <li>{{ i }}</li> {% endfor %}</ul> 3.模板文件中使用{% load common_extras %}把前面自定义的common_extras载入到模板文件中.
模板文件内容如下:
{% load common_extras %}<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Title</title></head><body>{% show_results %}{{ ss|mycut:‘ ‘ }}<br>{{ mm|mylower }}<br>{% current_time %}<br>{% current_time1 as ctime %}<br>{% show_results %}<br>{{ ctime }}</body></html> 4.使用views.py文件中视图进行渲染views.py:
def test(request): return render(request,‘book/ss.html‘,{‘ss‘:‘THIS IS MY NAME‘, ‘mm‘:123, ‘format_string‘:‘%Y-%m-%d %H:%M:%P‘, ‘li‘:[‘python‘,‘java‘,‘c++‘], ‘l2‘:[‘c#‘,‘iso‘,‘android‘] })
原文地址:https://www.cnblogs.com/remoting-py/p/9058268.html
时间: 2024-10-16 20:08:57