1 在settings中的INSTALLED_APPS配置当前app,不然django无法找到自定义的simple_tag.
2 在app中创建templatetags模块(模块名只能是templatetags)
3 创建任意 .py 文件,如:my_tags.py
from django import template from django.utils.safestring import mark_safe register = template.Library() #register的名字是固定的,不可改变
@register.filter
def filter_multi(v1,v2):
return v1 * v2
4 在使用自定义simple_tag和filter的html文件中导入之前创建的 my_tags.py
{% load my_tags %}
5 使用
在模板中:
# num=12 {% load my_tags %} {{ num|filter_multi:2 }} #24
总结:
1 修改表结构:
在权限表中加入is_menu和icon两个字段用来表示该权限是否是菜单权限
2 登录成功后:
注入该用户的权限列表和菜单权限列表注入到session中
permission_menu_list=[{},{}]
3 在菜单区域(side_bar):渲染出菜单链接标签:
{% for item in request.session.permission_menu_list %} <p><a href="{{ item.url }}">{{ item.title }}</a></p> {% endfor %}
4 点击标签加入active样式:
解决思路1:
每一个返回母版的视图函数中:
permission_menu_list = request.session.get("permission_menu_list") for item in permission_menu_list: if re.search("^{}$".format(item["url"]), request.path): item["class"] = "active"
解决思路2: 引入inclusion_tag方法:
@register.inclusion_tag("rbac/menu.html") def get_menu_styles(request): permission_menu_list = request.session.get("permission_menu_list") for item in permission_menu_list: if re.search("^{}$".format(item["url"]), request.path): item["class"] = "active" return {"permission_menu_list":permission_menu_list}
在layout.html中:
<div class="menu-body"> {% load web %} {% get_menu_styles request %} </div>