inclusion_tag
inclusion_tag
将模板和数据结合在一起,如果有很多路由对应的视图函数,返回的页面中都包含一些共同的东西,不需要再每个视图函数中,传递给模板,render再解析,传给浏览器.而是直接像是,自定义标签和过滤器一样
1,在app下创建一个templatetags文件,
2,创建一个 .py文件:代码如下
from django import template register = template.Library() # from django.conf import settings import re @register.inclusion_tag('rbac/menu.html') 会结合这个html一块返回给调用母版 def menu(request): menu_list = request.session.get('MENU_SESSION_KEY') for item in menu_list: url = item['url'] if re.match('^{}$'.format(url), request.path_info): item['class'] = 'active' break return {"menu_list": menu_list}
template文件下rabc下的menu.html中
<div class="static-menu"> {% for item in menu_list %} <a href="{{ item.url }}" class="{{ item.class }}"> <span class="icon-wrap"><i class="fa {{ item.icon }}"></i></span> {{ item.title }}</a> {% endfor %} </div>
母版中,(几条路由都要走的)
layout.html中
<div class="pg-body"> <div class="left-menu"> <div class="menu-body"> {% load rbac %} {% menu request %} #menu inclusion_tag的名字 request包含标签的参数,也可以不用传,因为
#为模板中可以直接调用 </div> </div>

浙公网安备 33010602011771号