Django零基础入门之常用过滤器详解

引言:

前面讲过了Django中使用模板变量。使用很简单,那么有没有什么关于模板变量的骚操作呢?
答案是肯定有的,这就是本文要讲的——过滤器!

1.过滤器

(1)纯干货讲解:

作用: 对变量进行过滤。在真正渲染出来之前,过滤器会根据功能处理好变量,然后得出结果后再替换掉原来的变量展示出来。

  • 语法:{{ fruits|lower }}
  • 管道符号进行链式调用(可以理解为嵌套使用!),比如实现一个功能,先把所有字符变成小写,再把第一个字符转换成大写。
  • 语法:{{fruits|lower|capfirst}}
  • 使用参数:过滤器可以使用参数,在过滤器名称后面使用冒号,加上双引号,双引号里面再加上参数,比如要把一个字符串中所有的空格去掉,则可以使用cut过滤器——语法: {{fruits|cut:" "}}
  • 注意:使用参数的时候,冒号和参数之间不能有任何空格,一定要紧挨着!

(2)Django中实战使用——常用的过滤器:

①项目目录下的views.py文件:

from django.shortcuts import render
from django.http import HttpResponse

# Create your views here.

from datetime import datetime
def index(request):
    test="THIS IS A LIST!"
    list=["A","B","C","D","E"]
    data={
        'test':test,
        'xx':'',
        'num1':1,
        'num2':2,
        'list':list,
        'now':datetime.now(),
        'html':'<h1>hello django!!!</h1>',
        'float':3.1415926
    }
    return render(request, "index.html", data)

②项目目录下templates模板文件夹下的模板文件index.html:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>测试!</title>
</head>
<body>

{#没做处理的变量:#}
{{ test }}<br>

{#设置了默认值的变量  在这个值被django认为是False的时候会使用此默认值。比如:空字符串,None。#}
{{ xx|default:'xxxxx' }}<br>

{#设置了只有为None时才使用默认值的变量#}
{{ xx|default_if_none:'aaaaa'}}<br>

{#变为小写后的变量#}
{{ test|lower }}<br>

{#先变为小写再将首字母大写后的变量#}
{{ test|lower|capfirst }}<br>

{#两个数字变量相加   add:字符串相加,数字相加,列表相加,如果失败,将会返回一个空字符串#}
{{ num1|add:num2 }}<br>

{#两个字符串变量相加#}
{{ test|add:xx }}<br>

{#列表变量的第一个元素#}
{{ list|first }}<br>

{#列表变量的最后一个元素#}
{{ list|last }}<br>

{#默认的data日期时间格式#}
{{ now|date }}<br>
{#默认的time时间格式#}
{{ now|time }}<br>
{#这是data过滤器的年月日24小时制时间格式#}
{{ now|date:'Y/m/d/H:i:s' }}<br>
{#这是time过滤器的时分秒12小时制时间格式#}
{{ now|time:'h:i:s' }}<br>

{#这是字符串的join方法  跟python中join一样的用法#}
{{ list|join:'oooo' }}<br>

{#这是字符串的长度方法#}
{{ test|length }}<br>

{#这是列表的长度是否为4#}
{{ list|length_is:4 }}<br>

{#下面这俩有xxx.html类型的,针对html,截断标签中的字符,而不会截断标签#}
{#这是字符串只显示4个字符,其余省略(但是占3位)#}
{{ test|truncatechars:7 }}<br>
{#这是字符串只显示2个单词,其余省略(不占位)#}
{{ test|truncatewords:2 }}<br>

{#这是字符串的切片#}
{{ test|slice:'1:4' }}<br>

{#这是列表的切片#}
{{ list|slice:'2' }}<br>

{#这是含html标签的字符串#}
{{ html }}<br>

{#这是去掉字符串中的html标签#}
{{ html|striptags }}<br>

{#这是关掉自动转义,使字符串中html标签生效#}
{{ html|safe }}<br>

{#这是没做处理的小数#}
{{ float }}<br>
{#这是保留了一位小数#}
{{ float|floatformat }}<br>
{#这是保留了两位小数#}
{{ float|floatformat:'2' }}

</body>
</html>

③效果展示:

date和time过滤器格式:

拓展——简介自动转义:

什么是自动转义?
自动转义是将变量的一些特殊字符,比如左箭头(<)、右箭头(>)转义成html代码,这样做的目的是为了处理一些不安全的变量。

<:转义成&lt;
>:转义成&gt;
‘:转义成'
“:转义成&quot;
&:转义成&amp;

到此这篇关于Django零基础入门之常用过滤器详解的文章就介绍到这了,更多相关Django过滤器内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • 布隆过滤器的概述及Python实现方法

    布隆过滤器 布隆过滤器是一种概率空间高效的数据结构.它与hashmap非常相似,用于检索一个元素是否在一个集合中.它在检索元素是否存在时,能很好地取舍空间使用率与误报比例.正是由于这个特性,它被称作概率性数据结构(probabilistic data structure). 空间效率 我们来仔细地看看它的空间效率.如果你想在集合中存储一系列的元素,有很多种不同的做法.你可以把数据存储在hashmap,随后在hashmap中检索元素是否存在,hashmap的插入和查询的效率都非常高.但是,由于ha

  • Python filter过滤器原理及实例应用

    filter的语法:filter(函数名字,可迭代的变量) 其实filter就是一个"过滤器":把[可迭代的变量]中的值,挨个地传给函数进行处理,那些使得函数的返回值为True的变量组成的迭代器对象就是filter表达式的结果 那filter的第一个参数,即函数的返回的值必须是bool类型,第二个参数必须是可迭代的变量:字符串.字典.元组.集合 其实从源码中也能大概看出filter是个什么东西 下面来看一些实际的代码示例: 打印列表中以"A"开头的名字 def fi

  • Python+Redis实现布隆过滤器

    布隆过滤器是什么 布隆过滤器(Bloom Filter)是1970年由布隆提出的.它实际上是一个很长的二进制向量和一系列随机映射函数.布隆过滤器可以用于检索一个元素是否在一个集合中.它的优点是空间效率和查询时间都比一般的算法要好的多,缺点是有一定的误识别率和删除困难. 布隆过滤器的基本思想 通过一种叫作散列表(又叫哈希表,Hash table)的数据结构.它可以通过一个Hash函数将一个元素映射成一个位阵列(Bit array)中的一个点.这样一来,我们只要看看这个点是不是1就可以知道集合中有没

  • Django-rest-framework中过滤器的定制实例

    1.定义一个自定义的filter.py模块,增加一个新的过滤类 import django_filters #这个Q可以支持表查询,单下划线获取表字段,双下划线获取关联表, from django.db.models import Q #引入自己的模型 from app.item.models import ItemCategory #自定义的过滤类,需要继承django_filter.rest_framework中的FilterSet类 class ItemCategoryFilter(dja

  • 详解Django模板层过滤器和继承的问题

    过滤器 模板层对变量的操作实际还有很多,过滤器就是其中一种.学过Linux系统的一定知道管道操作符,其可以将上一步输出直接作为下一步输入进行处理,这里的过滤器就是类似管道符,其写法也是以管道符|为标志,允许我们对模板层获得的变量进行改变,例如大小写转换.增减大小等等 语法 {{ 变量|过滤器1|过滤器2:'值' |...}} 这里的过滤器可以分为两类,一类是不带参数的,例如lower,upper,safe:一类是带参数的add:'10',冒号分隔,后面跟上值 过滤器 示例 说明 lower {{

  • python使用布隆过滤器的实现示例

    使用库pybloom_live from pybloom_live import ScalableBloomFilter,BloomFilter # 可自动伸缩的布隆过滤器 bloom = ScalableBloomFilter(initial_capacity=100,error_rate=0.001) # 添加内容 bloom.add('daqi') print('daqi'in bloom) # 定长的布隆过滤器 bloom1 = BloomFilter(capacity=10000) b

  • Django 模板中常用的过滤器实现

    模版常用过滤器 在模版中,有时候需要对一些数据进行处理以后才能使用.一般在Python中我们是通过函数的形式来完成的.而在模版中,则是通过过滤器来实现的.过滤器使用的是|来使用. add 将传进来的参数添加到原来的值上面.这个过滤器会尝试将值和参数转换成整形然后进行相加.如果转换成整形过程中失败了,那么会将值和参数进行拼接.如果是字符串,那么会拼接成字符串,如果是列表,那么会拼接成一个列表.示例代码如下: {{ value|add:"2" }} 如果value是等于4,那么结果将是6.

  • Django零基础入门之常用过滤器详解

    引言: 前面讲过了Django中使用模板变量.使用很简单,那么有没有什么关于模板变量的骚操作呢? 答案是肯定有的,这就是本文要讲的--过滤器! 1.过滤器 (1)纯干货讲解: 作用: 对变量进行过滤.在真正渲染出来之前,过滤器会根据功能处理好变量,然后得出结果后再替换掉原来的变量展示出来. 语法:{{ fruits|lower }} 管道符号进行链式调用(可以理解为嵌套使用!),比如实现一个功能,先把所有字符变成小写,再把第一个字符转换成大写. 语法:{{fruits|lower|capfirs

  • Django零基础入门之模板变量详解

    引言: 我们在页面上会看到,谁登录的就会显示谁的信息,那么这个页面上的变量信息是怎样实现的呢? 这就是本文要讲述的内容--Django中的模板变量! 1.模板变量! 可以在前端页面中使用模板变量来取数据库中的数据,实现前端页面数据动态显示. (1)模板变量使用规则:(在HTML模板中使用!) 语法: {{ 变量名 }} 命名由字母和数字以及下划线组成,不能有空格和标点符号 可以使用字典.类对象.方法.函数.列表.字符串 不要和python或django关键字重名 注意: 如果data是一个字典,

  • Django零基础入门之自定义过滤器及模板中的使用

    目录 引言 自定义过滤器 (1)首先 (2)内置过滤器lower的使用: (3)自定义过滤器的使用: (4)模板中使用自定义过滤器: (5)效果展示: 引言 分析Django内置的模板过滤器: 通过分析可以将内置的过滤器理解为: 一个带有一个或两个参数的python函数: (输入的)变量的值[注意:不一定是字符串形式,在前面也讲过可以是哪些类型.] 参数的值--可以有一个初始值,或者完全没有参数.   自定义过滤器 新建一个名为ceshi的app以供本文学习使用: 自定义过滤器及标签所在的tem

  • Django零基础入门之自定义标签及模板中的使用

    目录 自定义标签: 第一部分 (1)视图函数编写: (2)编写模板文件: (3)自定义标签实现: (4)效果展示: 第二部分 (1)视图函数编写: (2)编写模板文件: (3)自定义标签实现: 第三部分 紧接上文--<Django零基础入门之自定义过滤器及模板中的使用>,本文来讲一讲自定义标签!!! 自定义标签: 源码学习: template.Library().simple_tags(): def simple_tag(self, func=None, takes_context=None,

  • Django零基础入门之路由path和re_path详解

    目录 urls.py文件中的path和re_path 1.path的基本规则: 2.默认支持的转换器有: 3.re_path正则匹配: Django中实战使用path和re_path 1.urls.py文件: 2.views.py视图函数文件: 3.效果: 假设现在有个需求:   需要通过URL进行参数传递,我们该怎么做呢?     其中有个方法就是本文要讲的内容--path和进阶版的re_path. urls.py文件中的path和re_path 1.path的基本规则: path('test

  • Django零基础入门之调用漂亮的HTML前端页面

    引言:    Django如何调用HTML前端页面呢? Django怎样去调用漂亮的HTML前端页面呢? 就直接使用render方法即可! render方法是django封装好用来调用HTML前端模板的方法! 1.模板放在哪? 在主目录下创建一个templates目录用来存放所有的html的模板文件.(如果是使用pycharm创建django项目的话,默认就会自动创建这个目录哦!但是用命令创建django项目的话是没有此目录的!) templates目录里面再新建各个以app名字命名的目录来存放

  • Django零基础入门之静态文件的引用

    目录 效果展示: 1.静态文件引用: (1)创建静态文件目录: (2)静态文件路径的配置: (3)创建三大静态文件: (4)静态文件的引用: 引言: 在我们Django中如何引用三大静态文件(JavaScript,CSS,image)呢? 这就是本文要讲述的内容--静态文件的引用! 效果展示: 点击确定之后: 1.静态文件引用: (1)创建静态文件目录: 在项目目录下创建static目录, 为了区分开各种类型的静态文件,再分别创建css,image,js文件目录: (2)静态文件路径的配置: 在

  • Django零基础入门之运行Django版的hello world

    目录 1.项目目录及文件说明: 2.项目与应用app的关系: 3.使用django框架编写hello world! 1.项目目录及文件说明: manage.py django中的一个命令行工具,管理django项目: __init__.py 空文件,告诉python这个目录是python报: settings.py 配置文件,包含数据库信息,调试标志,静态文件等: urls.py django项目的URL声明: wsgi.py 部署服务器用到: templates 存放html文件. 2.项目与

  • AngularJS入门教程之过滤器详解

    在这一步你将学习到如何创建自己的显示过滤器. 请重置工作目录: git checkout -f step-9 现在转到一个手机详细信息页面.在上一步,手机详细页面显示"true"或者"false"来说明某个手机是否具有特定的特性.现在我们使用一个定制的过滤器来把那些文本串图形化:√作为"true":以及×作为"false".来让我们看看过滤器代码长什么样子. 步骤8和步骤9之间最重要的不同在下面列出.你可以在GitHub里看到

  • C++中的STL中map用法详解(零基础入门)

    目录 一.什么是 map ? 二.map的定义 2.1 头文件 2.2 定义 2.3 方法 三.实例讲解 3.1 增加数据 3.2 删除数据 3.3 修改数据 3.4 查找数据 3.5 遍历元素 3.6 其它方法 四.总结 map 在编程中是经常使用的一个容器,本文来讲解一下 STL 中的 map,赶紧来看下吧! 一.什么是 map ? map 是具有唯一键值对的容器,通常使用红黑树实现. map 中的键值对是 key value 的形式,比如:每个身份证号对应一个人名(反过来不成立哦!),其中

随机推荐