1.设置settiings.py--->在settings中的INSTALLED_APPS配置当前app,不然django无法找到自定义的simple_tag.
INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'web.apps.WebConfig', 'rbac.apps.RbacConfig', ]
2.在app中创建templatetags模块(模块名只能是templatetags)
3.创建任意*** .py 文件, 如: rbac.py
from django import template from django.utils.safestring import mark_safe #register的名字是固定的,不可改变 register = template.Library() # 乘法过滤器 @register.filter def mul(x,y): return x*y # a标签过滤器 @register.filter def tag(val): return mark_safe("<a>%s</a>"%val) # 小写字母过滤器 @register.filter def lower(val): return val.lower() # 3个数相乘之和 @register.simple_tag def mul_tag(x,y,z): return x*y*z
4.在使用自定义simple_tag和filter的html文件中导入之前创建的 rbac.py
{% load rbac %}
5.在模板中使用上面过滤器:
# num=12 {% load rbac %} {{ num|filter_multi:2 }} #24
//////////////////////////////// 自定义过滤器 ////////////////////////////////
1.设置settiings.py--->在settings中的INSTALLED_APPS配置当前app,不然django无法找到自定义的simple_tag.(如上所示)
2.在app中创建templatetags模块(模块名只能是templatetags)(如上所示)
3.创建网页menu.html文件
<div class="multi-menu"> {% for item in permission_menu_dict.values %} <div class="item"> <div class="title"><i class="{{ item.menu_icon }}"></i>{{ item.menu_title }}</div> <div class="body"> {% for foo in item.children %} <a href="{{ foo.url }}">{{ foo.title }}</a> {% endfor %} </div> </div> {% endfor %} </div>
4.创建任意*** .py 文件, 如: web.py
from django.template import Library register = Library() @register.inclusion_tag("rbac/menu.html") def get_menu_styles(request): permission_menu_dict = request.session.get("permission_menu_dict")
# 权限菜单字典 return {"permission_menu_dict": permission_menu_dict}
4.在使用自定义simple_tag的html文件中导入之前创建的web.py
# 这里只截取使用过滤器部分的代码,哪个网页用就把下面的代码复制上 <div class="left-menu"> <div class="menu-body"> {% load web %} {% get_menu_styles request %} </div> </div>
5.