学习笔记,仅供参考

参考自:Django打造大型企业官网–Huang Y;

本系列Blog以应用为主,理论基础部分我在后端专栏的Django系列博客已经写过了,如果有些需要补充的知识点,我会在这个系列中,尽量详细的记录一下。


自定义模板过滤器

理论

Django给我们提供了一个接口,可以让我们自定义过滤器,实现自己的需求。

过滤器实际上就是python中的一个函数,只不过是把这个函数注册到模板库中,以后在模板中就可以使用这个函数了,但是这个函数的参数有限制,第一个参数必须是这个过滤器需要处理的值,第二个参数可有可无,如果有,那么就意味着在模板中可以传递参数,并且过滤器的函数最多只能有两个参数。写完过滤器后,需要使用django.template.Library对象将自定义过滤器进行注册。

实践

  • 创建templatetags包

我们在项目newwebsite2的应用book下创建一个templatetags包:

  • 创建自定义过滤器

在这个包下面创建一个python文件,我们命名为my_filter.py

from django import template# 创建模板库对象
register = template.Library()# 过滤器函数
def mycut(value,mystr):return value.replace(mystr, "-")# 将函数注册到模板库中
register.filter("mycut",mycut)

register.filter方法中第一个参数为自定义过滤器的名字,第二个参数为自定义过滤器所对应的函数

  • 安装app

打开settings.py文件,并将app安装到INSTALLED_APPS列表中:

INSTALLED_APPS = ['django.contrib.admin','django.contrib.auth','django.contrib.contenttypes','django.contrib.sessions','django.contrib.messages','django.contrib.staticfiles','book',
]
  • 创建模板文件

如果想在模板中使用这个自定义过滤器,就要在模板中load一下这个过滤器所在的模块的名字(也就是这个python文件的名字)。

在templates文件夹中,创建模板文件my_cut.html:

{% load my_filter %}
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>小黄之家</title>
</head>
<body><p>{{ "马鞍山"|mycut:"鞍" }}</p></body>
</html>
  • 发起请求

我们向http://127.0.0.1:8000/my_cut/发起请求:

Very Well !

Django从理论到实战(part21)--自定义模板过滤器相关推荐

  1. Django从理论到实战(part22)--include模板标签

    学习笔记,仅供参考 参考自:Django打造大型企业官网–Huang Y: 本系列Blog以应用为主,理论基础部分我在后端专栏的Django系列博客已经写过了,如果有些需要补充的知识点,我会在这个系列 ...

  2. Django从理论到实战(part24)--在模板中访问静态文件

    学习笔记,仅供参考 参考自:Django打造大型企业官网–Huang Y: 本系列Blog以应用为主,理论基础部分我在后端专栏的Django系列博客已经写过了,如果有些需要补充的知识点,我会在这个系列 ...

  3. Django从理论到实战(part19)--DTL模板语法

    学习笔记,仅供参考 参考自:Django打造大型企业官网–Huang Y:官方文档 本系列Blog以应用为主,理论基础部分我在后端专栏的Django系列博客已经写过了,如果有些需要补充的知识点,我会在 ...

  4. Django从理论到实战(part15)--自定义path转换器

    学习笔记,仅供参考 参考自:Django打造大型企业官网: 本系列Blog以应用为主,理论基础部分我在后端专栏的Django系列博客已经写过了,如果有些需要补充的知识点,我会在这个系列中,尽量详细的写 ...

  5. Django从理论到实战(part20)--DLT常用过滤器

    学习笔记,仅供参考 参考自:Django打造大型企业官网–Huang Y: 本系列Blog以应用为主,理论基础部分我在后端专栏的Django系列博客已经写过了,如果有些需要补充的知识点,我会在这个系列 ...

  6. Python+django网页设计入门(18):自定义模板过滤器

    前导课程: Python+django网页设计入门(17):模板语法及应用 Python+django网页设计入门(16):优化设计复用分页代码 Python+django网页设计入门(15):公用模 ...

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

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

  8. Python一亿以内的素数个数_Python+django网页设计入门(18):自定义模板过滤器

    前导课程: Python+django网页设计入门(17):模板语法及应用 Python+django网页设计入门(16):优化设计复用分页代码 Python+django网页设计入门(15):公用模 ...

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

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

最新文章

  1. [WCF REST] 解决资源并发修改的一个有效的手段:条件更新(Conditional Update)
  2. 福布斯:2018年将改变世界的九股科技大趋势
  3. Android 框架炼成 教你怎样写组件间通信框架EventBus
  4. Win 8 自定义设置面版
  5. ISA Best Practices Analyzer Tool
  6. jvm 堆外内存_一图解千愁,jvm内存从来没有这么简单过!
  7. day25 在继承的背景下属性查找的顺序、组合、多态与接口、鸭子类型
  8. 两强格局初定,网易云能拿什么跟腾讯音乐打
  9. 码怪之程序员的日常语录
  10. Django setting ALLOWED_HOSTS
  11. 6. update更新数据的4种方法
  12. 程序员毕业去大公司好还是小公司好?
  13. ACM中关于Output Limit Exceeded和Time Limit Exceeded
  14. Windows打印机API封装
  15. 如何获取AK/SK?(IAM用户)
  16. Ubuntu不能连接XShell、主机Ping不通虚拟机,但虚拟机能ping通主机
  17. Echarts去除x轴,y轴网格线,网格区域(背景)
  18. 业务需求调研经验分享
  19. 华为魔术2手机拆机图解_Honor Magic2拆解图形教程
  20. 20_ecplise安装与简单使用汉化

热门文章

  1. python 的几个内置函数(lambda ,zip, filter, map, reduce )用法
  2. sublime text3 按F5运行python代码
  3. 大话数据结构13:二叉树 数组存储
  4. 斯坦福大学机器学习第五课正则化“
  5. 机器学习中的范数规则化之(二)核范数与规则项参数选择以及RPCA
  6. HttpServletRequest 对象
  7. Maven 插件打包java 后台
  8. OAuth2.0 授权的工作原理
  9. 山东理工OJ【2121】数据结构实验之链表六:有序链表的建立(插排法)
  10. 云安全仍是企业决策者最大担心