我在这里做的是: 从数据库查出id递增的一些信息,展示在前台。

编写一个过滤器判断查出数据的id是偶数的返回True 奇数返回False

1 创建项目,创建应用,注册应用,配置settings.py文件,配置urls映射,编写views试图,编写模板templates,编写models模块

切记 注册应用。  很多伙伴找不到自己定义的过滤器,是因为忘记注册应用!

2 创建过滤器的目录:

实际上,在项目目录或者应用目录下创建都是可以的,创建一个名为templatetags的python模块

在我这里,booktest是一个应用,templatetags 是存放过滤器的模块,,模块和目录的区别是 模块里面必须有__init__.py,告诉python这是可以import的东西

在templatetags模块里,建立一个py文件,写我们的自定义过滤器,文件名称可以自己定,这里我用filters.py

3 过滤器的编写:

 from django.template import Library

 register = Library()

 #一个偶数为真的过滤器
@register.filter # @register.filter(name='odd')  过滤器里面有很多选项
7 def odd(num ):
  return num%2==0

过滤器必须用Library().filter 来进行装饰, name表示过滤器的名字,也可以不指定,函数名就是过滤的名字

装饰后的函数,才能当作过滤器来使用

4 模板文件引入过滤器和使用

 <!DOCTYPE html>
<html lang="en"> {# 必须用这一句去引用过滤器 filters是我过滤器所在py文件的名字 #}
{% load filters %} <head>
<meta charset="UTF-8">
<title>Title</title>
<style>
.red{
background-color: red;
}
.gold{
background-color: gold;
}
</style>
</head>
<body>
<ul>
{% for book in books %}
{# 使用过滤器 #}
{% if book.id|odd %}
<li class="red">
{{ book.id }}----{{ book.btitle }}----{{ book.bpub_date|date:'Y-m-d' }}
</li>
{% else %}
<li class="gold" >
{{ book.id }}----{{ book.btitle }}----{{ book.bpub_date|date:'Y-m-d' }}
</li>
{% endif %}
{% endfor %} </ul> <ul>
{% for hero in heros %}
<li >{{ hero.id }}----{{ hero.hname }}</li>
{% endfor %} </ul> </body>
</html>

在模板中必须用{%load name%} 来引入我们的过滤器函数所在的py文件,name是py文件的名字 这里我的事filters

之后 如果使用过滤器那么就直接 变量|过滤器 就可以了。

{# 必须用这一句去引用过滤器 filters是我过滤器所在py文件的名字 #}
{% load filters %}
{#  使用过滤器  #}
{% if book.id|odd %}
<li class="red">
{{ book.id }}----{{ book.btitle }}----{{ book.bpub_date|date:'Y-m-d' }}
</li>
{% else %}

我做的是  id是基数和偶数分别改变不同的背景色。

最新文章

  1. Mysql并发时经典常见的死锁原因及解决方法
  2. 静态变量static和extern外引用
  3. tomcat和apache区别联系
  4. [2013 eoe移动开发者大会]靳岩:从码农到极客的升级之路
  5. Hex Editor实现Notepad++16进制编辑功能
  6. 0c-40-ARC下多对象内存管理
  7. log4j2使用总结
  8. Java装饰设计模式的例子
  9. 『信息收集』GoogleHacking快速定位目标网站
  10. HDU 3569 Imaginary Date 简单期望
  11. Nodejs的运行原理-libuv篇
  12. Afinal加载网络图片及下载文件使用方法
  13. vue表格实现固定表头首列
  14. Metrics-server插件安装配置
  15. Day 4-6 xml处理
  16. wince 6.0 汉字乱码
  17. 【未完成】[Spark SQL_2] 在 IDEA 中编写 Spark SQL 程序
  18. dubbo 实战总结
  19. Unix Programming :文件IO
  20. &quot;重力锁屏&quot;Beta版使用说明

热门文章

  1. JDK的安装和Java环境变量配置
  2. 【Unity与23种设计模式】访问者模式(Visitor)
  3. 优先级队列用法详解(priority_queue)
  4. 实现Java线程安全
  5. 笔记:Maven 生成项目站点
  6. Access第一周总结
  7. es6学习笔记--promise对象
  8. 【Flask】微型web框架flask大概介绍
  9. CAS 之 Hello World(二)
  10. 后端Nodejs利用node-xlsx模块读取excel