Django---inclusion_tag的使用
Django当中的inclusion_tag,来源于 from django.template import Library 属于Library下的一个方法。
主要作用:通过渲染一个模板来显示一些数据。属于自定义标签的一种。
项目实现:为了能够在页面中一栏上显示一级菜单
1.templatetags/rbac.py
from django.template import Library from django.conf import settings from collections import OrderedDict from rbac.service import urls register = Library() @register.inclusion_tag('rbac/static_menu.html') def static_menu(request): """ 创建一级菜单 :return: """ menu_list = request.session[settings.MENU_SESSION_KEY] return {'menu_list': menu_list}
注意:settings.MENU_SESSION_KEY 放放在settings当中的一个字符串。具体在初始化权限时候,将可以做菜单的权限放入到了session存储。
2.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>
3.layout.html
{% load static %} {% load rbac %} <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>xx系统</title> <link rel="shortcut icon" href="{% static 'imgs/luffy-study-logo.png' %} "> <link rel="stylesheet" href="{% static 'plugins/bootstrap/css/bootstrap.css' %} "/> <link rel="stylesheet" href="{% static 'plugins/font-awesome/css/font-awesome.css' %} "/> <link rel="stylesheet" href="{% static 'css/commons.css' %} "/> <link rel="stylesheet" href="{% static 'css/nav.css' %} "/> <link rel="stylesheet" href="{% static 'rbac/css/rbac.css' %} "/> <div class="pg-body"> <div class="left-menu"> <div class="menu-body"> {% static_menu request %} </div> </div> </div> <script src="{% static 'js/jquery-3.3.1.min.js' %} "></script> <script src="{% static 'plugins/bootstrap/js/bootstrap.js' %} "></script> <script src="{% static 'rbac/js/rbac.js' %} "></script> {% block js %} {% endblock %} </body> </html>
注意:1. {% load rbac %} 必须引入。(templatetags下的py文件);2. {% static_menu request %} 要将这个方法引入。request是参数。