【问题标题】:Django TemplateSyntaxError Could not parse the remainderDjango TemplateSyntaxError 无法解析剩余部分
【发布时间】:2015-03-06 01:29:24
【问题描述】:

为什么我不能在 Django 模板中输入这个?

data|customTag:variable,forloop.parentloop.counter

我只是希望能够将三个或更多参数传递给过滤器

假装已经有 for 循环并且变量/过滤器已经在别处定义了

【问题讨论】:

    标签: django django-templates django-template-filters


    【解决方案1】:

    这是不可能的,因为django template filters 只接受一个参数根据定义

    自定义过滤器只是需要一两个的 Python 函数 论据:

    • 变量(输入)的值——不一定是字符串。

    • 参数的值——这可以有一个默认值,或者被忽略 完全一致。

    有一个建议的解决方法here 可能适用于您的用例。

    另一种可能的解决方案是将带有 2 个输入参数的标签拆分为两个标签,其中一个标签并将它们链接到模板中。这取决于您在过滤器中的逻辑,但可以作为一个选项。

    【讨论】:

      【解决方案2】:

      在您的示例中,customTag过滤器,而不是模板标记。

      According to the docs,Django 模板过滤器只接受输入(在你的情况下为data)和一个可选参数。您收到错误是因为您试图传递多个参数,这是不可能的。

      你可以写一个custom template tag。模板中的语法是:

      {% customTag data variable forloop.parentloop.counter %} 
      

      【讨论】:

      • 我决定使用这条路线。我将如何在数据的上下文中实际传递?因为现在它只发送字符串“数据”。和 {{data}} 只是传递 '{{data}}'
      • 如果我无法弄清楚如何传入变量,这完全没用...我尝试阅读 defaulttags.py 的源代码,但我无法弄清楚
      • 如果您使用 simple_tag 装饰器,它应该会为您解决这个问题。否则,您可以从context 中获取变量。
      猜你喜欢
      • 2011-07-11
      • 2011-11-06
      • 2018-03-31
      • 2016-06-04
      • 1970-01-01
      • 2019-12-20
      • 2017-11-18
      • 1970-01-01
      • 2013-10-04
      相关资源
      最近更新 更多