【问题标题】:Is it possible to use a django filter on the result of a templatetag?是否可以对模板标签的结果使用 django 过滤器?
【发布时间】:2011-10-08 02:30:34
【问题描述】:

我有一个模板标签,它返回转换为用户时区的日期时间对象。要格式化它,我更喜欢内置过滤器“日期”来格式化它。
是否可以对模板标签的结果使用过滤器?

【问题讨论】:

    标签: django django-template-filters


    【解决方案1】:

    您可以使用“过滤器”模板标签包装您的自定义模板标签:

    {% filter date %}
        {% your_custom_tag %}
    {% endfilter %}
    

    更多信息在这里:https://docs.djangoproject.com/en/dev/ref/templates/builtins/#filter

    【讨论】:

      【解决方案2】:

      是的,如果可以的话。过滤器只是可以导入的函数。从 django.template.defaultfilters 导入您需要的过滤器函数并将您的参数传递给它。

      【讨论】:

      • 我应该提到我已经尝试过了,但没有成功。我做了“{% convert_tz datetime timezone %}|date format”,它给出了一个错误。 convert_tz 返回转换后的日期时间。
      • 您需要在模板标签 Python 代码中应用过滤器功能,而不是在模板本身中。或者,您可以在模板标签中设置上下文变量,然后将过滤器应用于该变量。
      • @Brandon,你能给出一个代码示例来解释一下吗?
      • 我的意思是 OP 需要在他的自定义模板标签中利用 date 过滤器。您不能将模板标签的结果传递给上面评论中指示的过滤器。
      • @tsovarev 下面的回答也是一个可行的选择。如果您要编写自定义标签,您还不如在标签中使用日期过滤器来保持模板不变,这只是我的看法。
      猜你喜欢
      • 2020-05-02
      • 2017-11-11
      • 2013-03-16
      • 2020-02-16
      • 2017-12-30
      • 1970-01-01
      • 2011-09-30
      • 2011-08-01
      • 2011-10-03
      相关资源
      最近更新 更多