博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python--day65--模板语言之filter
阅读量:7089 次
发布时间:2019-06-28

本文共 1968 字,大约阅读时间需要 6 分钟。

参考的原文链接:http://www.cnblogs.com/liwenzhou/p/7931828.html

Filters(过滤器)

在Django的模板语言中,通过使用 过滤器 来改变变量的显示。

过滤器的语法: {

{ value|filter_name:参数 }}

使用管道符"|"来应用过滤器。

例如:{

{ name|lower }}会将name变量应用lower过滤器之后再显示它的值。lower在这里的作用是将文本全都变成小写。

注意事项:

  1. 过滤器支持“链式”操作。即一个过滤器的输出作为另一个过滤器的输入。
  2. 过滤器可以接受参数,例如:{
    { sss|truncatewords:30 }},这将显示sss的前30个词。
  3. 过滤器参数包含空格的话,必须用引号包裹起来。比如使用逗号和空格去连接一个列表中的元素,如:{
    { list|join:', ' }}
  4. '|'左右没有空格没有空格没有空格

length

返回值的长度,作用于字符串和列表。

{

{ value|length }}

返回value的长度,如 value=['a', 'b', 'c', 'd']的话,就显示4.

 

filesizeformat

将值格式化为一个 “人类可读的” 文件尺寸 (例如 '13 KB''4.1 MB''102 bytes', 等等)。例如:

{
{ value|filesizeformat }}

如果 value 是 123456789,输出将会是 117.7 MB。

 

slice

切片

{
{value|slice:"2:-1"}}

date

格式化

{
{ value|date:"Y-m-d H:i:s"}}

safe

Django的模板中会对HTML标签和JS等语法标签进行自动转义,原因显而易见,这样是为了安全。但是有的时候我们可能不希望这些HTML元素被转义,比如我们做一个内容管理系统,后台添加的文章中是经过修饰的,这些修饰可能是通过一个类似于FCKeditor编辑加注了HTML修饰符的文本,如果自动转义的话显示的就是保护HTML标签的源文件。为了在Django中关闭HTML的自动转义有两种方式,如果是一个单独的变量我们可以通过过滤器“|safe”的方式告诉Django这段代码是安全的不必转义。

比如:

value = "<a href='#'>点我</a>"

{
{ value|safe}}

truncatewords

在一定数量的字后截断字符串。(最短是9个字符)

{
{ value|truncatewords:9}}

###使用的时候需要手动重启一下

 

自定义filter

自定义过滤器只是带有一个或两个参数的Python函数:

  • 变量(输入)的值 - -不一定是一个字符串
  • 参数的值 - 这可以有一个默认值,或完全省略

例如,在过滤器{

{var | foo:'bar'}}中,过滤器foo将传递变量var和参数“bar”

自定义filter代码文件摆放位置:

app01/    __init__.py    models.py    templatetags/  # 在app01下面新建一个package package        __init__.py        app01_filters.py  # 建一个存放自定义filter的文件    views.py

编写自定义filter

使用自定义filter: 

代码示例:

1 from django import template 2  3 #生成注册器 4 register = template.Library() 5  6  7 #告诉Django的模板语言我现在有一个自定义的filter方法,名字叫sb 8 @register.filter(name="sb") 9 def add_sb(arg):10     return "{} sb.".format(arg)11 12 #告诉Django的模板语言我现在有一个自定义的filter方法,名字叫addstr13 @register.filter(name="addstr")14 def add_sb(arg,arg2):15     """16     第一个参数永远是管道符前面那个变量17     :param arg: 管道符前面那个变量18     :param arg2:冒号后面变量19     :return:20     """21     return "{}{} ".format(arg,arg2)

 

转载于:https://www.cnblogs.com/xudj/p/10444914.html

你可能感兴趣的文章
PowerDesign16.5( 32位) 数据库建模
查看>>
Linux下搭建gtk+2.0和3.0开发环境
查看>>
springmvc学习笔记--ueditor和springmvc的集成
查看>>
有利于SEO的DIV+CSS的命名规则
查看>>
以这样的方式
查看>>
数据结构之栈和队列实现
查看>>
Redis基本认识
查看>>
盗版windows7高速免费安装windows10
查看>>
在PL/pgSQL中模拟GOTO语句的实现
查看>>
mongodb的通配符查询的一次失败经验
查看>>
PHP curl post json数据流
查看>>
實時顯示當前時間
查看>>
Git 分支合并(单文件合并,单commit合并)
查看>>
关于Android 如何实现mobile data on/off功能
查看>>
ES6新特性概览
查看>>
go alpine docker image 搭建
查看>>
Input / Output Error : Bad Blocks : How To Restar
查看>>
我的朗科运维第一课
查看>>
MySQL函数
查看>>
Debian7 编译WizNote Qt Project(为知笔记)
查看>>