18)django-模板的过滤器和tag,自定义simple_tag和filter

模板过滤器是在变量被显示前修改它的值的一个简单方法。 过滤器使用管道字符 .

模板标签(template tag) 。标签(tag)定义比较明确,即: 仅通知模板系统完成某些工作的标签。 

一:django自带过滤器

  

{{ name|lower }} 显示的内容是变量 {{ name }} 被过滤器 lower 处理后的结果,它功能是转换文本为小写{{ my_list|first|upper }}
{{ bio|truncatewords:"30" }}

addslashes : 添加反斜杠到任何反斜杠、单引号或者双引号前面。 这在处理包含JavaScript的文本时是非常有用的。
date : 按指定的格式字符串参数格式化 date 或者 datetime 对象, 范例:
{{ pub_date|date:"F j, Y" }}
length : 返回变量的长度。 对于列表,这个参数将返回列表元素的个数。 对于字符串,这个参数将返回字
符串中字符的个数。 你可以对列表或者字符串,或者任何知道怎么测定长度的Python 对象使用这个方法
(也就是说,有 __len__() 方法的对象)。

二:模板标签(template tag)

  标签(tag):定义比较明确,即: 仅通知模板系统完成某些工作的标签 ,比如

  for标签

  if 标签

三:自定义simple_tag

  如果django自带的过滤器和tag不满足需求,可以自己定义simple_tag和filter来使用

  把ptyhon某些函数直接那到模板语言使用,就模板的simple_tag

   建立步骤如下:

    步骤1)
        在某个app下面创建templatetags目录
    步骤2)在templatetags下面创建任意xx.py文件

    步骤3)创建template对象register,
    from django import template
    from django.utils.safestring import mark_safe

    register = template.Library()

    @register.simple_tag
    def my_simple_time(v1,v2,v3):
        return  v1 + v2 + v3

    步骤4)装饰自定义文件

    步骤5)setings里面注册app
    步骤6)在模板里顶部{% load xx%}
    步骤7)使用{% 函数名 参数%}

    优点:参数任意
    缺点:不能做为if条件

四:自定义filter(过滤器)

模板自定义filter

    步骤1)
        在某个app下面创建templatetags目录
    步骤2)在templatetags下面创建任意xx.py文件

    步骤3)创建template对象register,
    from django import template
    from django.utils.safestring import mark_safe

    register = template.Library()

    @register.filter
    def hello(v1,v2):
        return  v1 + v2

    步骤4)装饰自定义文件

    步骤5)setings里面注册app
    步骤6)在模板里顶部{% load xx%}
    步骤7)使用{{ 参数1|函数名:参数2}} 最多传递两个参数
        {{ "word"|hello:"china" }}

        最多传递两个参数,如果要传递多个参数,可以这样写
        {{ 参数1|函数名:“参数2,参数2”}}
        在函数里split切割

    缺点:参数最多两个,不能加空格
    优点:能作为if条件

五:示例

  app01.templatetags

  xx.py

    # -*- coding:utf-8 -*-
    __author__ = ‘shisanjun‘
    from django import template

    register=template.Library()

    @register.simple_tag
    def add(n,m): #自定义simple_tag,可以传递多个参数
        return n+m

    @register.filter
    def hello(n,m): #自定义filter,只能传递两个参数
        return n+m

  模板调用

    {% load xx %}
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
        <p>simple_tag演示</p>
        {% add 2 3 %}
          <p>filter演示,filter最多传递两个参数</p>
        {{ "word"|hello:"china" }}
        <p>simple_tag不能使用if判断,filter可以用于if判断测试条件</p>
        {%if "word"|hello:"china" %}
        {% endif %}

    </body>
    </html>

时间: 2025-01-06 06:20:51

18)django-模板的过滤器和tag,自定义simple_tag和filter的相关文章

Django自定义simple_tag和filter

摘要 1.模板: 模板是一个纯文本文件,或是一个用Django模板语言标记过的普通的Python字符串. 模板可以包含模板标签和变量. 而Django的模板引擎提供了一些类似于函数的功能,通过前端可以实现代码逻辑的功能,例如大小写转换.加减乘除等 2.模板标签: 是在一个模板里面起作用的的标记,可以产生控制结构的语句,也可以展现内容,或者获取其他的模板标签 内部提供的一些方法,官方参考链接 大家可以查看python3.6/site-packages/django/template/default

django模板(过滤器)

-------------------django内建的过滤器-------------------1.add 使用形式为:{{ value | add: "2"}} 意义:将value的值增加2 2.addslashes 使用形式为:{{ value | addslashes }} 意义:在value中的引号前增加反斜线 3.capfirst 使用形式为:{{ value | capfirst }} 意义:value的第一个字符转化成大写形式 4.cut 使用形式为:{{ value

Django——模板系统过滤器

过滤器,变量的显示形式的改变 一.形式:小写 {{ name | lower }} 二.串联:先转义文本到HTML,再转换每行到 <p> 标签 {{ my_text|escape|linebreaks }} 三.过滤器的参数 显示前30个字{{ bio | truncatewords:"30" }} 格式化{{ pub_date | date:"F j, Y" }} 过滤器列表 {{ 123|add:"5" }} 给value加上一个

Django——模板层(template)(模板语法、自定义模板过滤器及标签、模板继承)

阅读目录(Content) 模板语法之变量 模板之过滤器 default length filesizeformat date slice truncatechars safe 模板之标签 自定义标签和过滤器 模板继承 (extend) 模板语法之include 前言:当我们想在页面上给客户端返回一个当前时间,一些初学者可能会很自然的想到用占位符,字符串拼接来达到我们想要的效果,但是这样做会有一个问题,HTML被直接硬编码在 Python代码之中. 1 2 3 4 def current_dat

django——模板层

每一个Web框架都需要一种很便利的方法用于动态生成HTML页面. 最常见的做法是使用模板. 模板包含所需HTML页面的静态部分,以及一些特殊的模版语法,用于将动态内容插入静态部分. 说白了,模板层就是如何往HTML文件中填入动态内容的系统. 1. 模板的由来 你可能已经注意到我们在例子视图中返回文本的方式有点特别. 也就是说,HTML被直接硬编码在 Python代码之中. def current_datetime(request): now = datetime.datetime.now() h

Django模板层(template)

1.模板是一个文本,用于分离文档的表现形式和内容.也可以说是:HTML代码+模板语法      简单的例子:使用模板在页面显示"hello word" 在template中新建html文件:hello.html,  在views.py中添加对象,向模板中提交数据.在urls.py中添加url与函数对象的映射关系 <h1>{{ hello }}</h1> hello.html from django.shortcuts import render,redirect

Django框架-Django模板(template)系统

Django模板系统 官方文档 一.什么是模板? 只要是在html里面有模板语法就不是html文件了,这样的文件就叫做模板. 二.模板语法分类 Django模板中主要有两种特殊的符号: {{ }}   &    {%  % } {{}} 表示变量,在模板渲染的时候替换成后台传过来的值,{% %}表示逻辑相关的操作. 2.1.模板语法之变量:语法为 {{ 变量名 }}: 在 Django 模板中遍历复杂数据结构的关键是句点字符  .(也就是点),用来获取对象的相应属性值 views.py def

Django模板之自定义过滤器/标签/组件

自定义步骤: 1.     在settings中的INSTALLED_APPS配置当前app,不然django无法找到自定义的simple_tag. 2.     在app应用中创建templatetags模块包(模块名只能是templatetags) 3.     创建任意 .py 文件,如:my_tags.py ·   导入模块:from django import template ·   实例化注册器:register = template.Library()   #register的名

django模板中的自定义过滤器

(1)在APP下创建templatetags文件夹,与Models.py.views.py等同级,templatetags文件夹下添加__init__.py文件,可为空,再添加一个模块文件,例如cpt_filters.py,目录结构如下 myapp/ __init__.py models.py templatetags/ __init__.py cpt_filters.py views.py admin.py appa.py 目录下添加__init__.py文件可让python知道这里是pyth