1、在web开发中,经常会说要屏蔽某些字眼,用*来屏蔽客户比较隐蔽的信息,如身份证,姓名,手机号等等,当然,如果安全性做得好一点的会加密身份证后存入数据库,如果没有的话,直接取出来,页面要展示的时候,就需要屏蔽字眼了。还有django中获取字典的值,要在页面里循环获取很繁琐,可以用下面自定义标签的方式通过键获取对应的值。

2、在django当中,可以自定义模板标签,首先,新建一个py文件,叫做custom_tags.py,接下来可以编辑这个文件,很简单,直接附上代码了:

from django.template.defaulttags import register@register.filter
def get_item(dictionary, key):"""根据字典的键获取对应的值:param dictionary: 字典对象:param key: 键:return:"""return dictionary.get(key)@register.filter
def get_name(name):"""获取屏蔽字眼后的姓名:param name: 姓名:return:"""if name:if len(name) == 2:name = name[:1] + '*'elif len(name) == 3:name = name[:1] + '*' + name[2:]elif len(name) == 4:name = name[:1] + '**' + name[3:]else:name = name[:1] + '***' + name[len(name)-1:]else:name = ''return name@register.filter
def get_cert_no(cert_no):"""获取屏蔽字眼后的证件号:param cert_no: 证件号:return:"""if cert_no:if len(cert_no) == 18:cert_no = cert_no[:6] + '********' + cert_no[14:]elif len(cert_no) == 9:cert_no = cert_no[:4] + '***' + cert_no[7:]else:cert_no = cert_no[:3] + '****' + cert_no[len(cert_no)-1:]else:cert_no = ''return cert_no@register.filter
def get_mobile(mobile):"""获取屏蔽字眼后的手机号:param mobile: 手机号:return:"""if mobile:mobile = mobile[:5] + '*****' + mobile[9:]else:mobile = ''return mobile

3、接下来,还需在django项目底下配置这个自定义标签,加在settings.py底下的TEMPLATES底下,其中上面的custom_tags文件我放在了apps底下的utils包:

TEMPLATES = [{'BACKEND': 'django.template.backends.django.DjangoTemplates','DIRS': [os.path.join(BASE_DIR, 'templates')],'APP_DIRS': True,'OPTIONS': {'context_processors': ['django.template.context_processors.debug','django.template.context_processors.request','django.contrib.auth.context_processors.auth','django.contrib.messages.context_processors.messages','django.template.context_processors.media',],'libraries': {'custom_tags': 'utils.custom_tags'}},},
]

4、接下来就可以在html底下直接使用了,依次如下调用即可:

(1)、通过键值获取字典:

{{ stu_dict|get_item:'one' }}

(2)、屏蔽相关字眼,姓名,身份证,手机号依次如下:

{{ stu_info.name|get_name }}{{ stu_info.certno|get_cert_no}}{{ stu_info.mobile|get_mobile}}

5、以上内容仅供学习参考,谢谢!

django自定义模板标签,通过键获取字典的值,屏蔽姓名等隐蔽信息并调用展示到页面上相关推荐

  1. Django 自定义模板标签(template_tags)究竟有什么用?

    自定义模板标签,过滤器.英文翻译是Custom template tags and filters.custom filter自定义过滤器今天不在我的记录范围之内,以后用到再看官方文档也不迟. **问 ...

  2. Django 自定义模板标签TemplateTags

    创建自定义的模板标签(template tags) Django提供了以下帮助函数(functions)来允许你以一种简单的方式创建自己的模板标签(template tags): simple_tag ...

  3. Django自定义模板标签的使用详解

    目录 1.创建子应用:python manage.py startapp test01 2.进行相关的配置 3.在新建的test01文件下创建urls.py(此处名称可变但注意上图) 4.在test0 ...

  4. django “如何”系列4:如何编写自定义模板标签和过滤器

    django的模板系统自带了一系列的内建标签和过滤器,一般情况下可以满足你的要求,如果觉得需更精准的模板标签或者过滤器,你可以自己编写模板标签和过滤器,然后使用{% load %}标签使用他们. 代码 ...

  5. Django框架学习20--模板变量,模板标签,模板过滤器及自定义模板过滤器,自定义模板标签

    1.模板变量 string 字符串和 int 类型,通过key名称直接取值,如:{{ n_name }} list类型的取值,通过点下班取值,如:{{ fancy.0 }}.{{ fancy.1 }} ...

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

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

  7. template标签_Django实战: 利用自定义模板标签实现仿CSDN博客月度归档

    应网友慕之岩的请求,现提供下Django项目中如何使用自定义标签实现仿CSDN博客的月度归档(如下图所示).要求按月统计每个月发表的博文篇数, 跳过空白月份,最后结果按发布时间逆序排列.点击每个月份可 ...

  8. php嵌套模板,thinkphp3.1自定义模板标签嵌套实现

    thinkphp3.1自定义模板标签嵌套实现 之前做的自定义标签,属性里面读取不到上层标签的值,然后找了很多文档发现没有能解决的,然后就自己研究了一下,搞出来了,下面是方法,绝对能用,不能用我吃了它. ...

  9. 模板标签(tags)的介绍及如何自定义模板标签

    什么是模板标签(tags) 模板标签都是放在{%  %}括号里的,常见的模板标签有{% load xxxx %}, {% block xxxx %}, {% if xxx %}, {% url 'xx ...

最新文章

  1. 程序员的视角:java GC
  2. linux 时间日期类常用命令
  3. python游戏设计案例实战pdf_实战案例 | 新蔡规划馆设计方案
  4. 聊一聊顺序消息(RocketMQ顺序消息的实现机制)
  5. 基于单片机步进电机ppt答辩_基于MCU和DSP的步进电机控制技术分析
  6. 我新买的GTX1050为何装上去一直是黑屏
  7. 自动化测试基础篇--Selenium弹出框alert
  8. jieba分词的原理
  9. Quartus破解成功,但出现不支持某些设备的问题解决
  10. linux cat命令使用方法,Linux cat命令怎么使用
  11. 2017 追梦 远方
  12. Transformer中Relative Position Bias以及DropPath细节梳理
  13. 【PHP基础-3】PHP常用运算符
  14. 贪心算法---Huffman编码---神秘电报密码
  15. 卫星导航系统的发展历史
  16. 正则表达式判断手机号码运营商
  17. 别只关注M1芯片的苹果笔记本,iOS APP支持在 Mac上运行也是大事
  18. 男闺蜜下载 v1.6.2 安卓版
  19. eve模拟器上虚拟服务器,没有真机怎么做实验?EVE模拟器了解一下
  20. edge函数闪退 matlab,Microsoft Edge闪退怎么办?Microsoft Edge闪退解决办法

热门文章

  1. vue 常见错的可能原因
  2. Lua学习笔记(5): 表
  3. 虚拟机VMware搭建代码环境
  4. Codeforces Round #280 (Div. 2)
  5. javascript两行代码按指定格式输出日期时间
  6. 编程输出2的90次方的精确值
  7. Android小項目之---ListView实现论坛管理效果(附源碼)
  8. 夯实基础,彻底掌握js的核心技术(二):面向对象编程(Object Oriented Programming)
  9. node-包管理工具 npm
  10. Tips--解决安装matplotlib无法使用pyplot的问题