Python学习(三十七)—— 模板语言之自定义filter和中间件

一、模板语言之自定义filter

自定义filter文件存放位置

模板中自定义函数
    - 在已注册的app中创建一个名字叫 templatetags 文件夹
    - 任意创建一个py文件
    - 创建名字交 register 的Library类的对象
    - 定义函数
    from django.template import Library
    register = Library()

    # 调用示例:{{ "a1"|meikai:"n1,n2"}}
    # 参数最多2
    # 可以做if的条件
    @register.filter
    def meikai(a1,a2):
        n1,n2 = a2.split(‘,‘)
        data = "我的名字叫:%s,我喜欢%s和%s" %(a1,n1,n2)
        return data

    # 调用示例:{% wangyan 1 2 3 4 %}
    # 参数无限制
    # 无法做if条件
    @register.simple_tag
    def wangyan(a1,a2,a3,a4):
        result = a1+a2+a3+a4
        return result        

注意事项

py文件必须写上:
from django.template import Library
register = Library()

自定义函数的两种方式:
@register.filter
缺点:最多只能传两个参数,在模板使用方法{{ 参数1|函数名:参数2 }}
优点:可以在if判断中使用

@register.simple_tag
优点:可以传递多个参数,在模板使用方法{% 函数名 参数1 参数2 参数3 ... %}

在模板中想要使用自定义函数,必须先导入py文件,在模板的开头加上一句:
{% load py文件名(不用.py后缀) %}

 代码示例:

from django.template import Library

register = Library()

@register.filter
def t1(arg):
    return arg.upper()

@register.simple_tag
def melody(n1, n2, n3):
    str = "I‘am {},I like {},my dream is to be a {}".format(n1, n2, n3)
    return str

原文地址:https://www.cnblogs.com/Coufusion/p/8379358.html

时间: 2024-11-08 15:37:14

Python学习(三十七)—— 模板语言之自定义filter和中间件的相关文章

python第三十七天,GIL全局解释器锁*****,线程池与进程池 同步异步,阻塞与非阻塞,异步回调

GIL全局解释器锁 1.什么是GIL 官方解释:'''In CPython, the global interpreter lock, or GIL, is a mutex that prevents multiple native threads from executing Python bytecodes at once. This lock is necessary mainly because CPython’s memory management is not thread-safe

Django学习之 - 基础模板语言

模板语言循环 1:如果模板语言遇到列表,直接进行循环取值即可. 2:如果模板语言遇到字典进行循环有以下3种: - for item in dict.keys 只循环获取字典key - for item in dict.value 只循环获取字典value - for k,v in dict.items 循环获取字典的key,value全部.实例url:fordict # 字典for循环的取值方法 1 userlist = { 2 '1': {'name': 'jack', 'age': 36},

python学习三(python代码的基本概念)

几个概念  1.表达式   一个类似于数字公式的东西,表达式一般仅仅用来计算一些结果,不会对程序产生实质性的影响,如果在交互模式中输入一个表达式,解释器会自动将表达式的结果输出  如:          1+2 3+4  2.语句  在程序中语句一般需要完成某中功能,比如打印信息,获取信息,为变量赋值..  如:         print()         a = 10  语句的执行一般会对程序产生影响   在交互模式中不一定会输出语句的执行结果  3.程序  程序就是由一条一条的语句和一条

Python - Django - 模板语言之自定义过滤器

自定义过滤器的文件: 在 app01 下新建一个 templatetags 的文件夹,然后创建 myfilter.py 文件 这个 templatetags 名字是固定的,myfilter 是自己起的 myfilter.py: from django import template register = template.Library() @register.filter(name="sleep") # name 是 html 中的过滤器名 def sleep(arg): retur

Python学习三---序列、列表、元组

一.序列 1.1.序列概念 pythn中最基本的数据结构是序列(sequence). 序列中每个元素被分配一个序号-元素索引,第一个索引是0,第二个是1,以此类推.类似JAVA中数组和集合中的下标. 从后向前,最后一个索引是-1,-2,.... python包含6种内建序列.最常用的两种类:列表和元组,其它内奸序列类型有字符串.Unicode字符串.buffer对象和xrange对象. 列表和元组的主要区别在于,列表可以修改,元组不能修改. 添加元素就用列表. 由于 一些原因不能修改时就用元组.

Python学习(十七)—— 数据库(二)

一. 数据库管理软件的由来 基于我们之前所学,数据要想永久保存,都是保存于文件中,毫无疑问,一个文件仅仅只能存在于某一台机器上.如果我们暂且忽略直接基于文件来存取数据的效率问题,并且假设程序所有的组件都运行在一台机器上,那么用文件存取数据,并没有问题. 但是很不幸,上述假设存在以下几个问题...... 1.程序所有的组件就不可能运行在一台机器上 #因为这台机器一旦挂掉则意味着整个软件的崩溃,并且程序的执行效率依赖于承载它的硬件,而一台机器机器的性能总归是有限的,受限于目前的硬件水平,就一台机器的

python第三十七天--异常--socket

异常处理 1 #!usr/bin/env python 2 #-*-coding:utf-8-*- 3 # Author calmyan 4 5 list_l=['g','h'] 6 data={'一':'3'} 7 try: 8 #list_l[3]#IndexError: list index out of range 9 data['2q'] 10 except IndexError as e:#列表下标超出边界 11 print(e) 12 except KeyError as e:#字

Python学习笔记(4):自定义时间类

Python的时间我实在无法接受,太难用了.我觉得C#的时间就非常完美,简单.好用.所以,自定义了自己的时间类: 用法: 一个小小的应用,我需要取出每天股市交易的分钟段,开始是这样的: 稍微改进一下,就变成这样了: 这才是Python的魅力之处!

Python学习(三) Django框架简单搭建

为了快速学习Python进行Web的开发,所以我不准备从Python的基础学起,直接从Django框架入手,边学框架边学Python的基础知识. 下面就开始Django的快速开发之旅吧. 关于Django框架1.8的英文文档在其官网上都有,地址 https://docs.djangoproject.com/en/1.8/intro/ Python的开发手册地址:https://pythonspot.com/getting-started/ https://docs.djangoproject.c