码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 在Django框架中自定义模板过滤器的方法


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

    •     (输入)变量的值
    •     参数的值, 可以是默认值或者完全留空

    例如,在过滤器 {{ var|foo:"bar" }} 中 ,过滤器 foo 会被传入变量 var 和默认参数 bar。

    过滤器函数应该总有返回值。 而且不能触发异常,它们都应该静静地失败。 如果出现错误,应该返回一个原始输入或者空字符串,这会更有意义。

    这里是一些定义过滤器的例子:

    1

    2

    3

    def cut(value, arg):

      "Removes all values of arg from the given string"

      return value.replace(arg, '')

    下面是一个可以用来去掉变量值空格的过滤器例子:

    1

    {{ somevariable|cut:" " }}

    大多数过滤器并不需要参数。 下面的例子把参数从你的函数中拿掉了:

    1

    2

    3

    def lower(value): # Only one argument.

      "Converts a string into all lowercase"

      return value.lower()

    当你定义完过滤器后,你需要用 Library 实例来注册它,这样就能通过Django的模板语言来使用了:

    1

    2

    register.filter('cut', cut)

    register.filter('lower', lower)

    Library.filter() 方法需要两个参数:

    •     过滤器的名称(一个字串)
    •     过滤器函数本身

    如果你使用的是Python 2.4或者更新的版本,你可以使用装饰器register.filter():

    1

    2

    3

    4

    5

    6

    7

    @register.filter(name='cut')

    def cut(value, arg):

      return value.replace(arg, '')

    @register.filter

    def lower(value):

      return value.lower()

    如果你想第二个例子那样不使用 name 参数,那么Django会把函数名当作过滤器的名字。

    下面是一个完整的模板库的例子,它包含一个 cut 过滤器:

    1

    2

    3

    4

    5

    6

    7

    from django import template

    register = template.Library()

    @register.filter(name='cut')

    def cut(value, arg):

      return value.replace(arg, '')

  • 相关阅读:
    高并发、多线程、分布式都不懂,你拿什么跳槽阿里、腾讯、京东?还不好好学习啊
    Django 4.x Overviewses 框架概述
    河南分销系统开发利润怎么分配?
    一文彻底理解什么是同步和异步!
    解读OOM killer机制输出的日志
    gdb 挂载动态链接库符号表
    408王道计算机组成原理强化——指令系统及大题解构
    Vite3.0都发布了,你还能卷得动吗(新特性一览)
    kafka安装
    flexsim仿真模型-MC公司下游仓库管理仿真实验
  • 原文地址:https://blog.csdn.net/jh035512/article/details/128141739
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号