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>