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 %}

  

 

posted @ 2022-04-05 21:42  叶青IT爱好者  阅读(187)  评论(0编辑  收藏  举报