inclusion_tag的运用
当页面上某一块区域的内容需要在多个页面上展示的使用,并且该区域的内容需要通过传参数才能正常显示,那么我们可以优先考虑inclusion_tag模块
自定义标签过滤器inclusion_tag三步骤:
1.在应用下必须新建一个名叫templatetags的文件夹
2.在文件夹下新建任意名称的py文件比如rbac.py
3.在该py文件内必须先写两句代码
from django.template import Library register = Library()
下面看一个运用的实例代码
@register.inclusion_tag('rbac/multi_menu.html')
def multi_menu(request):
    """
    创建二级菜单
    :return:
    """
    menu_dict = request.session[settings.MENU_SESSION_KEY]
    # 对字典的key进行排序
    key_list = sorted(menu_dict)
    # 空的有序字典
    ordered_dict = OrderedDict()
    for key in key_list:
        val = menu_dict[key]
        val['class'] = 'hide'
for per in val['children']:
            if per['id'] == request.current_selected_permission:
                per['class'] = 'active'
                val['class'] = ''
        ordered_dict[key] = val
return {'menu_dict': ordered_dict}
前端的界面代码如下:
<div class="multi-menu" >
    {% for item in menu_dict.values %}
        <div class="item">
            <div class="title"><span class="icon-wrap"><i class="fa {{ item.icon }}"></i></span> {{ item.title }}</div>
            <div class="body {{ item.class }}">
                {% for per in item.children %}
                    <a class="{{ per.class }}" href="{{ per.url }}">{{ per.title }}</a>
                {% endfor %}
            </div>
        </div>
    {% endfor %}
</div>
运用的时候需要引入比如上面的运用
{% load rbac %}
 {% multi_menu request %}
 
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号