准备阶段
在settings中的INSTALLED_APPS配置当前app,不然django无法找到自定义的simple_tag.
在app中创建templatetags模块(模块名只能是templatetags)
后端代码:
1.导入需要的模块
from django.template import Library
register=Library() 提醒自己:只能是register
2.定义自定义过滤器
(1)把数据和页面结合起来不分离
方法一:
@register.inclusion_tag(web/menu.html交给渲染的html页面)
使用函数构造方法
def get_menu_styles(request):
书写逻辑
permission_menu_list=request.session.get("permission_menu_list")
for item in permission_list:
if re.search('^{}$'.format(item["url"]),request.path)
item["class"] = "active"
return{"permission_menu_list":permission_menu_list}
渲染页面代码:
<div class="static-menu"> {% for item in permission_menu_list %} {# 拿到权限菜单的url,图标,和显示的文本#} <a href="{{ item.url }}" class="{{ item.class }}"> <span class="icon-wrap"><i class="fa {{ item.icon }}"></i></span> {{ item.title }} </a> {% endfor %} </div>
显示到浏览器的代码:
{% load web %}
{% get_menu_styles request %}
方法二:
准备:
导入模块 from django.utils.safestring import mark_safe from django.template import Library register =Library()
1.定义一个乘法计算
@register.lter
def mul(x,y)
return x*y
2.定义一个a标签
def tag(val)
return mark_safe("<a> %s</a>" %val)
3.定义一个nb点的乘法
register.simple_tag
def mul_tag(x,y,z)
return x*y*z