inclusion_tag 基本使用

inclusion_tag的用途

inclusion_tag可以实现从后台往前端传递绑定数据的样式,一般用来动态显示模板页面中显示固定格式的数据。

inclusion_tag的用法

step1: 编写前端页面样式模板
rbac/templates/rbac/static_menu.html

<div class="static-menu">
    {% for item in menu_list %}
        <a href="{{ item.url }}">
            <span class="icon-wrap">
                <i class="fa {{ item.icon }}"></i></span>{{ item.title }}
        </a>
    {% endfor %}
</div>

step2: 使用inclusion_tag
rbac/templatetags/rbac.py

from django.template import Library
from django.conf import settings

register = Library()

@register.inclusion_tag("rbac/static_menu.html")
def static_menu(request):
    """
    动态显示一级菜单
    :param request:
    :return:
    """
    menu_list = request.session[settings.PERMISSION_MENU_KEY]
    return {"menu_list": menu_list}

# rbac/templatetags/rbac.py 必须是 templatetags文件夹名
# register = Library() 固定写法
# return 的数据传递给rbac/static_menu.html使用

step3: 在需要的页面位置处,引入并使用inclusion_tag
web/templates/web/layout.html

{# 先导入 #}
{% load rbac %}

<div class="pg-body">
    <div class="left-menu">
        <div class="menu-body">
            {# 再使用 #}
            {% static_menu request %}
        </div>
    </div>
</div>

本质static_menu函数给rbac/static_menu.html提供需要的参数,然后再需要的页面位置处使用 static_menu函数,需要时提供 static_menu函数需要的参数。页面最后将渲染rbac/static_menu.html的带有数据的样式。

猜你喜欢

转载自www.cnblogs.com/liuxu2019/p/11960866.html