Django(模板语言-自定义filter和simple_tag)

filter过滤器的主要形式:变量|函数,意思是将变量交给函数处理,而自定义filter就是自己定义函数,因为用到已有的很少。

1.在当前app中创建templatetags模块(包:带__init__.py)(必须的)

2.在templatetags中创建.py文件,如my_tags.py

from django import template     #因为要应用到前端模板语言,必须导入template
from django.utils.safestring import mark_safe

register = template.Library()   #register的名字是固定的,不可改变

##########两种:1.register.filter 2.register.simple_tag
//对应html中的 |
@register.filter
def filter_multi(v1,v2):
    return  v1 * v2

@register.simple_tag
def simple_tag_multi(v1,v2):
    return  v1 * v2

@register.simple_tag
def my_input(id,arg):
    result = "<input type=‘text‘ id=‘%s‘ class=‘%s‘ />" %(id,arg,)
    return mark_safe(result)        

---------------------make_safe()保证生成标签

3.在html中导入之前创建的my_tags.py:{% load my_tags%}

4.使用filter和simple_tags(如何调用)

-------------------------------.html
{% load xxx %}   #首行

1.使用filter,最多能传2个参数    

 # num=12
{{ num|filter_multi:2 }} #24            参数最多2个,但能放在if for语句中  num为参数一,冒号后的2是参数二

{{ num|filter_multi:"[22,333,4444]" }}

2.使用simple_tag,能传多个参数
{% simple_tag_multi 2 5 %}  参数不限,但不能放在if for语句中        2,5为参数
{% simple_tag_multi num 5 %}

e.在settings中的INSTALLED_APPS配置当前app,不然django无法找到自定义的simple_tag

注意:(filter可以放在if for语句中,simple_tags不能)

{% if num|filter_multi:30 > 100 %}
    {{ num|filter_multi:30 }}
{% endif %}

原文地址:https://www.cnblogs.com/jayxuan/p/11107989.html

时间: 2024-12-08 15:53:38

Django(模板语言-自定义filter和simple_tag)的相关文章

Django之模板语言(二)-----Filter

1.其他常用的模板语言: 通过模板语言可以让前端页面显示数据,数据可以是基本数据类型,也可以是对象亦或者对象的列表,结合着模板中的for.if等配合使用. 要注意前端页面中,出现没有后端数据的情况,随便写了一个变量,结果在前端页面中不会显示. 怎么让这个随便的变量不随便捏,可以使用defalut默认显示. 如何在模板语言中显示文件的大小? 如何在模板语言中格式化的显示时间? 如何在模板中安全的显示后台传过来的html代码? 如何对于模板语言中不存在的变量可以默认显示? 如何进行切片操作?slic

Django模板语言

常用语法 {{  }}和{% %} 变量相关的用{{}} , 逻辑相关的用{% %} 变量 在Django的模板语言中按此语法使用:{{ 变量名 }}. 当模版引擎遇到一个变量,它将计算这个变量,然后用结果替换掉它本身. 变量 的命名包括任何字母数字以及下划线 ("_")的组合(不提倡数字开头). 变量名称中 不能有空格或标点符号. 点(.)在模板语言中有特殊的含义.当模版系统遇到点("."),它将以这样的顺序 查询: 字典查询(Dictionary lookup)

django 模板语言

Django的模板语言的目的是取得力量和易用性之间的平衡,与其他的模板语言相比,django模板语言显得更简单,更专一, django模板系统由模板,变量,过滤器,标签,注释等主要部分组成 模板 一个模板是一个简单的文本文件,它可以生成任何基于文本的格式,html,csv,xml等等 模板里面包含变量,过滤器,标签和注释,下面是一个简单的模板文件 {% extends "base_generic.html" %} {% block title %}{{ section.title }}

Django模板语言小记

1.blog.views.py  # Create your views here. from django.template import loader,Context from django.http import HttpResponse from blog.models import BlogPost def archive(request):     posts = BlogPost.objects.all()     t = loader.get_template('archive.

模板语言 自定义函数simple_tag

模板语言自带的一些处理函数:通过管道符来处理 帮助方法:{{ item.event_start|date:"Y-m-d H:i:s"}}  转换成日期时间型{{ bio|truncatewords:"30" }} 只取前30个字符{{ my_list|first|upper }} 将第一个字母大写{{ name|lower }} 全转换小写 有时我们须要自定义函数: a.在app中创建templatetags模块 b.创建任意 .py 文件,如:xx.py 1 2

Django模板语言-(母板、组件、静态文件相关、simple_tag、inclusion_tag)

母板 母版的写法 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="x-ua-compatible" content="IE=edge"> <meta name="viewport" content="width=devi

Django模板语言相关内容

Django模板系统 官方文档:https://docs.djangoproject.com/en/1.11/ref/templates/builtins/#std:templatetag-for 常用语法 只需要记两种特殊符号: {{  }}和 {% %} 变量相关的用{{}},逻辑相关的用{%%}. 变量 {{ 变量名 }} 变量名由字母数字和下划线组成. 点(.)在模板语言中有特殊的含义,用来获取对象的相应属性值. 几个例子: view中代码: def template_test(requ

Django 模板之自定义函数

我们已经知道了在Django的模板里面,可以使用for循环,if判断,接收后台的数据,还可以通过 extends和include来重复使用其他的模板,这一节来学习如何自定义函数. 模板里面有两种方式来自定义函数,分别是simple_tag和 filter方式. simple_tag: 1 首先在app下创建一个templatetags的目录,然后在这个目录下面创建一个py文件,注意这个目录的名字是固定的 2.  然后在这个py文件里面,导入模板类,实例化一个对象register,然后执行一个装饰

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的名