如何向 django 模板中的自定义模板过滤器添加多个参数?

2023-11-24

这是我的自定义过滤器:

from django import template

register = template.Library()

@register.filter
def replace(value, cherche, remplacement):
    return value.replace(cherche, remplacement)

而且,以下是我尝试在模板文件中使用它但导致错误的方法:

{{ attr.name|replace:"_"," " }}
{{ attr.name|replace:"_" " " }}
{{ attr.name|replace:"_":" " }}
{{ attr.name|replace:"cherche='_', remplacement=' '" }}

我调查了Django 的文档 and book但只找到了使用单个参数的示例......这可能吗?


这是可能的,而且相当简单。

Django 只允许您的过滤器使用一个参数,但是您没有理由不能将所有参数放入一个字符串中,并使用逗号将它们分隔开。

例如,如果您想要一个过滤器来检查变量 X 是否在列表 [1,2,3,4] 中,您将需要一个如下所示的模板过滤器:

{% if X|is_in:"1,2,3,4" %}

现在我们可以像这样创建您的模板标签:

from django.template import Library

register = Library()

def is_in(var, args):
    if args is None:
        return False
    arg_list = [arg.strip() for arg in args.split(',')]
    return var in arg_list

register.filter(is_in)

创建 arg_list 的行是一个生成器表达式,它将 args 字符串拆分为所有逗号,并调用 .strip() 来删除任何前导和尾随空格。

例如,如果第三个参数是 int,则只需执行以下操作:

arg_list[2] = int(arg_list[2])

或者,如果它们都是整数,则:

arg_list = [int(arg) for arg in args.split(',')]

编辑:现在要通过使用键值对作为参数来具体回答您的问题,您可以使用 Django 用于解析 URL 中的查询字符串的相同类,这也具有根据您的 settings.py 正确处理字符编码的好处。

因此,与查询字符串一样,每个参数都用“&”分隔:

{{ attr.name|replace:"cherche=_&remplacement= " }}

那么你的替换函数现在看起来像这样:

from django import template
from django.http import QueryDict

register = template.Library()

@register.filter
def replace(value, args):
    qs = QueryDict(args)
    if qs.has_key('cherche') and qs.has_key('remplacement'):
        return value.replace(qs['cherche'], qs['remplacement'])
    else:
        return value

您可以加快速度,但冒着进行一些错误替换的风险:

qs = QueryDict(args)
return value.replace(qs.get('cherche',''), qs.get('remplacement',''))
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何向 django 模板中的自定义模板过滤器添加多个参数? 的相关文章

  • SQLAlchemy 通过关联对象声明式多对多自连接

    我有一个用户表和一个朋友表 它将用户映射到其他用户 因为每个用户可以有很多朋友 这个关系显然是对称的 如果用户A是用户B的朋友 那么用户B也是用户A的朋友 我只存储这个关系一次 除了两个用户 ID 之外 Friends 表还有其他字段 因此
  • 将数据从 python pandas 数据框导出或写入 MS Access 表

    我正在尝试将数据从 python pandas 数据框导出到现有的 MS Access 表 我想用已更新的数据替换 MS Access 表 在 python 中 我尝试使用 pandas to sql 但收到错误消息 我觉得很奇怪 使用 p
  • Python(Selenium):如何通过登录重定向/组织登录登录网站

    我不是专业程序员 所以请原谅任何愚蠢的错误 我正在做一些研究 我正在尝试使用 Selenium 登录数据库来搜索大约 1000 个术语 我有两个问题 1 重定向到组织登录页面后如何使用 Selenium 登录 2 如何检索数据库 在我解决
  • Python - StatsModels、OLS 置信区间

    在 Statsmodels 中 我可以使用以下方法拟合我的模型 import statsmodels api as sm X np array 22000 13400 47600 7400 12000 32000 28000 31000 6
  • PyUSB 1.0:NotImplementedError:此平台不支持或未实现操作

    我刚刚开始使用 pyusb 基本上我正在玩示例代码here https github com walac pyusb blob master docs tutorial rst 我使用的是 Windows 7 64 位 并从以下地址下载 z
  • BeautifulSoup 中的嵌套标签 - Python

    我在网站和 stackoverflow 上查看了许多示例 但找不到解决我的问题的通用解决方案 我正在处理一个非常混乱的网站 我想抓取一些数据 标记看起来像这样 table tbody tr tr tr td td td table tr t
  • 添加不同形状的 numpy 数组

    我想添加两个不同形状的 numpy 数组 但不进行广播 而是将 缺失 值视为零 可能最简单的例子是 1 2 3 2 gt 3 2 3 or 1 2 3 2 1 gt 3 2 3 1 0 0 我事先不知道形状 我正在弄乱每个 np shape
  • IO 密集型任务中的 Python 多线程

    建议仅在 IO 密集型任务中使用 Python 多线程 因为 Python 有一个全局解释器锁 GIL 只允许一个线程持有 Python 解释器的控制权 然而 多线程对于 IO 密集型操作有意义吗 https stackoverflow c
  • 在f字符串中转义字符[重复]

    这个问题在这里已经有答案了 我遇到了以下问题f string gt gt gt a hello how to print hello gt gt gt f a a gt gt gt f a File
  • python获取上传/下载速度

    我想在我的计算机上监控上传和下载速度 一个名为 conky 的程序已经在 conky conf 中执行了以下操作 Connection quality alignr wireless link qual perc wlan0 downspe
  • 如何在seaborn displot中使用hist_kws

    我想在同一图中用不同的颜色绘制直方图和 kde 线 我想为直方图设置绿色 为 kde 线设置蓝色 我设法弄清楚使用 line kws 来更改 kde 线条颜色 但 hist kws 不适用于显示 我尝试过使用 histplot 但我无法为
  • 如何在 Python 中追加到 JSON 文件?

    我有一个 JSON 文件 其中包含 67790 1 kwh 319 4 现在我创建一个字典a dict我需要将其附加到 JSON 文件中 我尝试了这段代码 with open DATA FILENAME a as f json obj js
  • 解释 Python 中的数字范围

    在 Pylons Web 应用程序中 我需要获取一个字符串 例如 关于如何做到这一点有什么建议吗 我是 Python 新手 我还没有找到任何可以帮助解决此类问题的东西 该列表将是 1 2 3 45 46 48 49 50 51 77 使用
  • Conda SafetyError:文件大小不正确

    使用创建 Conda 环境时conda create n env name python 3 6 我收到以下警告 Preparing transaction done Verifying transaction SafetyError Th
  • Scrapy:如何使用元在方法之间传递项目

    我是 scrapy 和 python 的新手 我试图将 parse quotes 中的项目 item author 传递给下一个解析方法 parse bio 我尝试了 request meta 和 response meta 方法 如 sc
  • 发送用户注册密码,django-allauth

    我在 django 应用程序上使用 django alluth 进行身份验证 注册 我需要创建一个自定义注册表单 其中只有一个字段 电子邮件 密码将在服务器上生成 这是我创建的表格 from django import forms from
  • 在 Qt 中自动调整标签文本大小 - 奇怪的行为

    在 Qt 中 我有一个复合小部件 它由排列在 QBoxLayouts 内的多个 QLabels 组成 当小部件调整大小时 我希望标签文本缩放以填充标签区域 并且我已经在 resizeEvent 中实现了文本大小的调整 这可行 但似乎发生了某
  • 使用 Python 的 matplotlib 选择在屏幕上显示哪些图形以及将哪些图形保存到文件中

    我想用Python创建不同的图形matplotlib pyplot 然后 我想将其中一些保存到文件中 而另一些则应使用show 命令 然而 show 显示all创建的数字 我可以通过调用来避免这种情况close 创建我不想在屏幕上显示的绘图
  • Python 类继承 - 诡异的动作

    我观察到类继承有一个奇怪的效果 对于我正在处理的项目 我正在创建一个类来充当另一个模块的类的包装器 我正在使用第 3 方 aeidon 模块 用于操作字幕文件 但问题可能不太具体 以下是您通常如何使用该模块 project aeidon P
  • NotImplementedError:无法将符号张量 (lstm_2/strided_slice:0) 转换为 numpy 数组。时间

    张量流版本 2 3 1 numpy 版本 1 20 在代码下面 define model model Sequential model add LSTM 50 activation relu input shape n steps n fe

随机推荐

  • 为什么在 Ruby 中应该避免使用 then 关键字?

    一些 Ruby 风格指南中提到 您应该 永远不要使用 就我个人而言 我认为 then 关键字可以使代码更密集 这往往更难阅读 这个建议还有其他理由吗 我几乎从不使用then关键词 然而 有一种情况我认为它极大地提高了可读性 考虑以下多条件
  • 除了 new object() 之外,还有什么理由要锁定其他东西吗?

    object theLock new object lock theLock 我总是用一个new object 为此 但我想知道 是否有任何情况下您会锁定更具体的类型 在我看来 任何引用类型都可以被锁定 使用虚拟对象的原因是为了避免常见的锁
  • Angular2 - 如何使用具有动态 url 的路由器

    假设我有一个嵌套的 itemListComponent 它是 rootComponent 的子组件 使用以下模板 span a item title a span 由 Json 服务提供的路径 item url 可能具有以下路径结构之一 c
  • 将解决方案应用于实际数据时结果不正确

    我尝试将此问题中提供的解决方案应用于我的真实数据 选择多索引数据框中的行 不知怎的 我无法得到它应该给出的结果 我已附上可供选择的数据框以及结果 我需要的 应返回第 3 11 和 12 行 当您连续添加 4 列时 也应选择 12 现在不是
  • Heroku 可以使用哪些级别的日志记录?

    我有一个在 Heroku 上运行的 Rails 应用程序 它运行良好 我让它以调试级别日志记录运行 但现在我切换回 INFO 还有哪些其他级别的调试可用 当运行生产时 我应该使用什么级别的日志记录 在 Heroku 上 您可以使用 LOG
  • 为什么我无法运行我的 Node.js Express Web 应用程序

    Node js 和 Express 生成器确实非常方便且易于理解 但是 我无法通过运行 c my application root gt DEBUG my application bin www 来启动我的服务器 Windows 似乎不理解
  • 找不到 matplotlib 数据文件

    我是 python 新手 我正在尝试使用 pyinstaller 从 py 脚本创建 exe 但在尝试运行 exe 时出现此错误 无法找到 matplotlib 数据文件 当我在 python 空闲中运行脚本时 我没有收到此错误 我试过了
  • Eclipse CDT Indexer 不能完全识别 c++11

    首先 我了解用于启用 c 11 支持的 std c 11 标志及其放置位置 我已附加 std c 11 to Project gt Properties gt C C Build gt Settings gt Tool Settings g
  • Internet Explorer-10 websocket 中的 IPv6 地址给出语法错误

    我从服务器获取 ipv6 地址 然后我为 websocket 创建 url 我的网址看起来 喜欢 ws xxxx xxxx xxxx xxxx xxxx xxxx 十进制端口 其中 x 十六进制的 0 f 这个网址在 chrome 和 fi
  • $_SERVER["REMOTE_ADDR"] 提供服务器 IP 而不是访问者 IP

    我正在尝试跟踪访问者的 IP 地址 使用时 SERVER REMOTE ADDR 我得到的是服务器的IP地址而不是访问者的IP地址 我在多个位置的多台机器上进行了尝试 它们都产生了完全相同的 IP 是否有一些 PHP 服务器设置可能会影响这
  • Ruby 中的有符号和无符号整数

    像 C 一样 Ruby 是否有有符号和无符号整数 如果有的话 是否意味着 String 类的 length 方法返回有符号整数 因为在 C 整数中 如果未指定则意味着有符号 Ruby 实现整数的方式使得有符号 无符号的区别无关紧要 因为 R
  • 如何排列 TPopupMenu 以使其准确地将自己定位在按钮上方?

    我想要一个按钮上方的弹出菜单 Delphi 包装 Win32 菜单系统的方式似乎排除了底层 Win32 API 提供的每种模式或标志 而这些模式或标志当时并没有出现在 VCL 作者的脑海中 一个这样的例子似乎是TPM BOTTOMALIGN
  • jQuery UI DatePicker - 禁用除每个月的第一天和第 15 天之外的所有日期

    我想禁用此日期选择器上除每月 1 日和 15 日之外的所有日期 我引用了这个已回答的问题 但我只能返回一个日期 我是 javascript 的新手 jQuery UI DatePicker 禁用除每月最后一天之外的所有日期 任何帮助都会很棒
  • Python 中的 3D Dicom 可视化

    我是 3D 图像处理新手 我想知道如何用python查看dicom系列 我尝试使用 matplotlib 和 VTK 在 matplot 中 我无法像使用 volViewer 在 matlab 中查看那样查看体积 关于 VTK 我无法导入
  • 替换 csv 文件中的新行 (\n) 字符 - Spark scala

    为了说明问题 我采取了一个测试集 csv 文件 但在实际情况下 问题必须处理超过 TeraByte 的数据 我有一个 CSV 文件 其中的列用引号括起来 col1 但是当数据导入完成后 一列包含换行符 n 当我想将它们保存为 Hive 表时
  • JQuery 中的条件规则验证

    我在用jQuery 验证 现在我希望只有在满足某些条件时才调用我的规则 即我想要 AppSelectField is hidden 回来false 然后我才调用规则 我的规则如下 function RequestLock validate
  • C++ 在 << 之后使用 stringstream 作为参数

    是否可以编写一个采用字符串流的方法并使其看起来像这样 void method string str void printStringStream StringStream ss method ss str 并且可以这样调用 stringst
  • 白名单和黑名单安全性哪个更好,或两者兼而有之? [关闭]

    Closed 这个问题是基于意见的 目前不接受答案 我很快就会构建一个网络应用程序 我需要一个安全模型 以便不同的用户可以访问应用程序的不同部分和 或应用程序的特定部分内的不同数据集 我正在争论以下两种实现安全性的方法 白名单 默认情况下
  • 无法从“pytorch_lightning.utilities”导入名称“_TPU_AVAILABLE”

    我正在尝试导入 aitexten 包以在 GPT 2 解决方案上工作 但我遇到了一个错误 ImportError 无法从 pytorch lightning utilities 导入名称 TPU AVAILABLE usr local li
  • 如何向 django 模板中的自定义模板过滤器添加多个参数?

    这是我的自定义过滤器 from django import template register template Library register filter def replace value cherche remplacement