1、在settings中的INSTALLED_APPS配置当前app,不然django无法找到自定义的simple_tag.

2、在app中创建templatetags模块(模块名只能是templatetags)

3、创建任意 .py 文件,如:my_tags.py

 1 from django import template
 2 from django.utils.safestring import mark_safe
 3
 4 register = template.Library()   #register的名字是固定的,不可改变
 5
 6
 7 @register.filter
 8 def filter_multi(v1,v2):
 9     return  v1 * v2
10 <br>
11 @register.simple_tag
12 def simple_tag_multi(v1,v2):
13     return  v1 * v2
14 <br>
15 @register.simple_tag
16 def my_input(id,arg):
17     result = "<input type='text' id='%s' class='%s' />" %(id,arg,)
18     return mark_safe(result)

4、在使用自定义simple_tag和filter的html文件中导入之前创建的 my_tags.py

1 {% load my_tags %} 

5、使用simple_tag和filter(如何调用)

 1 -------------------------------.html
 2 {% load xxx %}
 3
 4 # num=12
 5 {{ num|filter_multi:2 }} #24
 6
 7 {{ num|filter_multi:"[22,333,4444]" }}
 8
 9 {% simple_tag_multi 2 5 %}  参数不限,但不能放在if for语句中
10 {% simple_tag_multi num 5 %}

注意:filter可以用在if等语句后,simple_tag不可以

1 {% if num|filter_multi:30 > 100 %}
2     {{ num|filter_multi:30 }}
3 {% endif %}

动态显示菜单权限

1 修改表结构:
在权限表中加入is_menu和icon两个字段用来表示该权限是否是菜单权限

2 登录成功后:
注入该用户的权限列表和菜单权限列表注入到session中
permission_menu_list=[{},{}]

3 在菜单区域(side_bar):渲染出菜单链接标签:

解决思路1:每一个返回母版的视图函数中

1 permission_menu_list = request.session.get("permission_menu_list")
2 for item in permission_menu_list:
3     if re.search("^{}$".format(item["url"]), request.path):
4         item["class"] = "active"

解决思路2:引入inclusion_tag方法

1 @register.inclusion_tag("rbac/menu.html")
2 def get_menu_styles(request):
3     permission_menu_list = request.session.get("permission_menu_list")
4     for item in permission_menu_list:
5         if re.search("^{}$".format(item["url"]), request.path):
6             item["class"] = "active"
7     return {"permission_menu_list":permission_menu_list}

在母版html中

<div class="menu-body">{% load web %}{% get_menu_styles request %}
</div>

转载于:https://www.cnblogs.com/qq849784670/p/9960612.html

自定义过滤器和标签,动态显示菜单权限相关推荐

  1. Web框架之Django_04 模板层了解(过滤器、标签、自定义过滤器、标签、inclusion_tag、模板的继承与导入)

    阅读目录 一.模板语法: 二.过滤器:(Filters) 三.模板的继承与模板的导入 摘要: 模版层(模板语法) 模板语法 过滤器 标签 自定义过滤器.标签 inclusion_tag 模板的继承 模 ...

  2. 16.引言篇——自定义过滤器及标签

    引言--在前面讲述了如何使用Django内置的过滤器,这在我们进行某些项目开发时很是方便.但是,内置的过滤器毕竟有限(当内置的满足不了我们的需求该怎么办?),但是规则是死的,人是活的.这就引出了接下来 ...

  3. Django(5) - 自定义过滤器及标签

    五,自定义过滤器及标签 满足额外需求 一,自定义过滤器(常用在App下创建) 一,在App下创建1.创建templatetags包,注意,这是一个python包2.创建customer_filters ...

  4. Django 框架13: 自定义过滤器和标签

    2019独角兽企业重金招聘Python工程师标准>>> Django的模板系统自带了一系列的内建标签和过滤器,一般情况下可以满足开发要求,如果觉得需更精准的模板标签或者过滤器,可以自 ...

  5. (5)完整的Django框架学习之自定义过滤器及标签

    新建文件 1.自定义过滤器 2.自定义标签 3.包含标签

  6. booktest-17 自定义过滤器 模板标签没有除法和取余函数

    1.在app目录下新建包,包名必须为templatetags 2.在该包下新建filters.py from django.template import Library #创建一个libray的对象 ...

  7. python文件路径过滤器_自定义过滤器及标签

    代码布局(自定义的代码,放在哪里) 1,某个app特有的 --app目标下,templateags 文件夹 --再到ttemplateags 文件夹下创建python模块(py文件) 2,定义复用 - ...

  8. django自定义过滤器及模板标签

    django自定义过滤器及模板标签 文件路径配置: 某个app特有的 -app 目录下,新建templatetags 文件夹 -再到 templatetags 文件夹下创建python模块(py文件) ...

  9. 20190325 Django自定义过滤器和自定义模板标签

    代码布局(死去活来) 自定义要先解决几个问题: 1). 在哪里定义,要将代码写在哪里? app目录下的名为templatetags的文件夹,必须叫这个名字.这个文件夹必须是一个python的包(pyt ...

  10. django-DIL模板自定义过滤器,自定义标签,自定义包含标签

    django-DIL模板自定义过滤器,自定义标签,自定义包含标签 自定义过滤器 DTL模板语言生来只是为了方便的展示信息,所以与编程语言相比显得有点薄弱,有时候不能满足我们的需求.因此django提供 ...

最新文章

  1. HDU - 2767 Proving Equivalences tanjar强连通-DAG性质
  2. 情人节|致爱丽丝……
  3. .Net Discovery系列之十一-深入理解平台机制与性能影响 (中)
  4. 传统IDC转型有了新思路 Zstack除了混合云还有托管云
  5. 由Photoshop高反差保留算法原理联想到的一些图像增强算法。
  6. 【Linux】一步一步学Linux——dpkg-statoverride命令(277)
  7. 【算法分析与设计】查找第K大/小元素问题
  8. 北大青鸟消防设备类型编码_探测器该如何编码?即报警区域、探测区域的真正用途...
  9. SAP License:内部顾问的培养与成长
  10. 考研一战失利反思与二战的规划
  11. 进程间的通信方式(六种)
  12. SYN 包在什么场景下会被丢弃?
  13. 【改变键盘上方向键蹩脚的位置】通过autohotkey脚本实现键盘按键重映射【便利码代码】--以上下左右键映射为capslock与hjkl组合的按键 【附源码】
  14. 论文阅读:CVPR 2022 Object Localization under Single Coarse Point Supervision
  15. 联通用户取消plus黄金会员自动续费
  16. NFC(Near Field Communication)简介--来自百度百科
  17. 「C++小游戏教程」基本技巧(1)——随机化
  18. 2020 夏季短学期实践学习计划与安排
  19. R语言caret机器学习(四):数据拆分
  20. 中文版Google App Engine入门指南

热门文章

  1. php文件锁不起作用,php文件锁产生的问题和解决方案(一个真实案例)
  2. ip访问次数统计 nginx_nginx访问量统计
  3. Alink、Tensorflow on Flink 在京东的应用
  4. CTO@全体成员,未经允许和评审不让用反射,Java反射到底慢在哪?
  5. 华为 HR 内网 5000 字实名控诉:研发兄弟一个月加班 160 小时却被说不努力...
  6. javaweb java代码写在哪里_写了那么多年 Java 代码,终于 debug 到 JVM 了
  7. mysql char最大长度_MySQL中的CHAR和VARCHAR到底支持多长?
  8. matlab pca重构,如何反转PCA并从几个主要组成部分重建原始变量?
  9. isag java_ISAG - WEB源码|JSP源码/Java|源代码 - 源码中国
  10. matlabif函数多个条件并列_sql课堂笔记-窗口函数