过滤器分内置和自定意义

PS:过滤器可以用在for循环和if判断后,但是标签不能使用在for循环和if判断后

内置过滤器:

add(在模板中实现加减法)

default(就是当传入的变量是False的时候显示后面设定的字符,如果是True的时候就是显示True)

length(计算变量的长度)

filesizeformat*(将变量的值根据长度自动进行一个单位换算,不同长度显示不同的单位,kb\mb\tb)

date(将python中的时间对象变成自己设定的类型在页面中显示,date后面格式一定是一个字符串形式)、safe(就是将视图中的变量值原封不动的在页面中显示)

PS:过滤器的使用{{ 字符或者数字 |add:字符或者数字 }}

内置标签

for 循环、if 判断

自定义过滤器:步骤必须严格按照格式,最多只能传2个参数

1、在settings中的INSTALLED_APPS配置当前app,不然django无法找到自定义的simple_tag.   #其实就是新建app的时候要在settings中配置

2、在app中创建templatetags模块(模块名只能是templatetags)   #在app下要创建一个包 名字为templatetags,这个名字不能错误

3、创建任意 .py 文件,如:my_tags.py   #名字随意命名,这个py文件内就是写自定意义过滤器的代码

4、在自定义过滤器的py文件内把django.template中的Library 导入

5、在自定义过滤器的py文件内定义一个变量是register = Library()

6、定义过滤器:在自己写的过滤器代码,即函数顶部加上@register.filter(is_safe=False)

7、使用自定义过滤器:

在模板中要用load导入自定义过滤器   {% load 自定义过滤器文件名%}   #自定义过滤器

{{ 参数值 |自定义过滤器函数名 : 参数值 }}   #前后的参数不限于字符或数字,根据需求写的过滤器的功能不同

PS:写好过滤器项目要重启 下,否则可能无法导入

PS:给过滤器重命名,可以在@register.filter(name='addrses')   #这里括号里的name就是给过滤器重命名,以后调用时候直接用这个重命名的名字即可

自定义标签:在模板中使用,传入的参数不限

1、在settings中的INSTALLED_APPS配置当前app,不然django无法找到自定义的simple_tag.   #其实就是新建app的时候要在settings中配置

2、在app中创建templatetags模块(模块名只能是templatetags)   #在app下要创建一个包 名字为templatetags,这个名字不能错误

3、创建任意 .py 文件,如:my_tags.py   #名字随意命名,这个py文件内就是写自定意义标签的代码

4、在自定义过滤器的py文件内把django.template中的Library 导入

5、在自定义过滤器的py文件内定义一个变量是register = Library()

6、定义过滤器:在自己写的过滤器代码,即函数顶部加上@register.simple_tag()

7、使用自定义标签:

在模板中用load导入自定义标签 {% load 自定义标签名%}

{%  自定义标签名 空格 参数1 空格 参数2 %}   #格式就是标签名后面+空格——传入的参数,有多少参数就要写多少参数

自定义过滤器和标签实例:

my_filter.py  #app01\templatetags  下

# 这里写的就是自定义过滤器的代码
from django.template import Library register = Library() @register.filter(is_safe=False)
def my_filters(a,b):
return a + b

views.py  #这里一定要传参,否则报错

from django.shortcuts import render,HttpResponse

# Create your views here.

def index(request):
li = [1,2,3]
return render(request,'index.html',{'li':li})

urls.py

from django.conf.urls import url
from django.contrib import admin
from app01 import views
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'index/', views.index)
]

index.html

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h1>我是首页</h1>
{{ li }} <p>使用自定义过滤器</p>
{% load my_filter %}
{{ 1| my_filters:4 }} <p>使用自定义标签</p>
{% load my_label %}
{% my_labels 1 2 3 %}
</body>
</html>

过滤器用在if判断内

views.py   #app下的

from django.shortcuts import render,HttpResponse

# Create your views here.

def index(request):
li = 1
return render(request,'index.html',{'li':li})

my_filter.py  #app01\templatetags下的

# 这里写的就是自定义过滤器的代码
from django.template import Library register = Library() @register.filter(is_safe=False)
def my_filters(a,b):
return a + b

index.html

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h1>我是首页</h1>
{{ li }}
{#自定义过滤器用在if判断后 #}
{% load my_filter %}
{% if 1|my_filters:20 < 10 %}
<p>小于10</p>
{% else %}
<p>大于10</p>
{% endif %} </body>
</html>

urls.py

from django.conf.urls import url
from django.contrib import admin
from app01 import views
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'index/', views.index)
]

(13)自定意义标签和过滤器 (templatetags)的更多相关文章

  1. python 全栈开发,Day70(模板自定义标签和过滤器,模板继承 (extend),Django的模型层-ORM简介)

    昨日内容回顾 视图函数: request对象 request.path 请求路径 request.GET GET请求数据 QueryDict {} request.POST POST请求数据 Quer ...

  2. Django 模板 语法 变量 过滤器 模板继承 组件 自定义标签和过滤器 静态文件相关

    本节目录 一 语法 二 变量 三 过滤器 四 标签Tags 五 模板继承 六 组件 七 自定义标签和过滤器 八 静态文件相关 一 语法   模板渲染的官方文档 关于模板渲染你只需要记两种特殊符号(语法 ...

  3. Django基础(2)--模板自定义标签和过滤器,模板继承 (extend),Django的模型层-ORM简介

    没整理完 昨日回顾: 视图函数: request对象 request.path 请求路径 request.GET GET请求数据 QueryDict {} request.POST POST请求数据 ...

  4. Django模板自定义标签和过滤器,模板继承(extend),Django的模型层

    上回精彩回顾 视图函数: request对象 request.path 请求路径 request.GET GET请求数据 QueryDict {} request.POST POST请求数据 Quer ...

  5. Django框架(七)—— 模板层:变量、过滤器、标签、自定义标签和过滤器

    目录 模板层:变量.过滤器.标签.自定义标签和过滤器 一.模板层变量 1.语法 2.使用 二.模板层之过滤器 1.语法 2.常用过滤器 3.其他过滤器 三.模板值标签 1.for标签 2.if标签 3 ...

  6. Django标签和过滤器

    过滤器格式{{   }} 标签格式{%  %} 模板中过滤器filter只能使用一个参数,自定义标签中则可以使用多个参数!!! 过滤器能够采用链式的方式使用,例如:{{ text | escape | ...

  7. 模板继承and自定义模板标签和过滤器

    自定义模板标签和 过滤器: 因为模板标签和过滤器只给我们提供了 这么多 无法对我们的使用造成更多的便利 ,剩下的就需要我们自己去创建新的 模板标签和过滤器了 1.在settings中的INSTALLE ...

  8. Django内建模版标签和过滤器

    第四章列出了许多的常用内建模板标签和过滤器.然而,Django自带了更多的内建模板标签及过滤器.这章附录列出了截止到编写本书时,Django所包含的各个内建模板标签和过滤器,但是,新的标签是会被定期地 ...

  9. django中自定义标签和过滤器

    想要实现自定义标签和过滤器需要进行准备工作: 准备(必需)工作: 1  在某个app下创建一个名为templatetags(必需,且包名不可变)的包.假设我们在名为polls的app下创建了一个tem ...

随机推荐

  1. 蓝桥杯—BASIC-19 完美的代价(贪心)

    问题描述 回文串,是一种特殊的字符串,它从左往右读和从右往左读是一样的.小龙龙认为回文串才是完美的. 现在给你一个串,它不一定是回文的,请你计算最少的交换次数使得该串变成一个完美的回文串. 交换的定义 ...

  2. 服务消费和负载(Ribbon)

    使用RestTemplate调用服务 在上一篇教程中,我们是这样调用服务的,先通过 LoadBalancerClient 选取出对应的服务,然后使用 RestTemplate 进行远程调用. Load ...

  3. 使用gitblit搭建自己的代码存储仓库

    一.基本准备: 服务器:阿里云的windows server 2008 r2 64位 相关软件: 1.java的jdk包: 2.gitblit程序包(这个不用安装,是绿色的). 二.安装步骤 1.下载 ...

  4. 5.3 C++用顶层函数重载操作符

    参考:http://www.weixueyuan.net/view/6381.html 总结: 可以将操作符重载函数声明为顶层函数. 如果以顶层函数的形式重载操作符时,二元操作符重载函数必须有两个参数 ...

  5. CentOS7安装配置Bacular

    参考: http://blog.51cto.com/molewan/2045602 https://blog.csdn.net/heshangkung/article/details/47955023 ...

  6. DevExpress v18.1新版亮点——Reporting篇(三)

    用户界面套包DevExpress v18.1日前终于正式发布,本站将以连载的形式为大家介绍各版本新增内容.本文将介绍了DevExpress Reporting v18.1 的新功能,快来下载试用新版本 ...

  7. git创建后的 各种命令 总结

    .git status命令可以让我们时刻掌握仓库当前的状态,上面的命令告诉我们,readme.txt被修改过了,但还没有准备提交的修改. .$ git diff readme.txt    git d ...

  8. 20165326 java第九周学习笔记

    第九周学习笔记 URL类 属于java.net包 最基本三部分:协议(对象所在的Java虚拟机支持).地址(能连接的有效IP地址或域名).资源(主机上的任何一个文件) 常用构造方法 public UR ...

  9. xampp 忘记密码的处理方式.

    网上看到一些方法: 大部分是第一种:  方法一 这个方法, 我使用的时候没有生效. -------------- 后来看到另外一种方法 .  直接替换user表的三个文件.  这个方法成功了. xam ...

  10. 2019-03-20-day015-序列化存储

    昨日回顾 序列化模块: json -- load dump dumps loads pickle -- load dump dumps loads shelve -- 文件 + 字典 f = shel ...