Django-tables2 - 如何在 TemplateColumn 中使用自定义过滤器

标签 django django-templates django-template-filters django-tables2

我在 django-tables2 表中有一个 TemplateColumn,我想使用自定义模板过滤器(名为 int_to_time)来转换数据。当我使用内置过滤器时,它可以正常工作。

到目前为止,我所做的是将模板\django_tables2\table.html 从 django-tables2 复制到我的项目中,并将我的标签库包含到 table.html 中。

但是,当我尝试渲染 View 时,出现以下错误:

TemplateSyntaxError at /details_show/2012/3/13/2
Invalid filter: 'int_to_time'

错误似乎在 table.html 的第 28 行

{% for column, cell in row.items %}

我可以确认我的标签库正在加载,因为如果我把标签库的名称写错了,那么我会得到一个找不到模板库的错误。

请帮忙!

最佳答案

最简单的解决方案

TemplateColumn在模板外部呈现列。您在模板中加载的任何自定义过滤器或标签都将不可用。

您应该能够在定义 TemplateColumn 时加载自定义过滤器。比如:

name1 = tables.TemplateColumn('{% load my_filters %}{{ record.name|int_to_time }}')

替代方案(布拉德利在评论中建议)

而不是在定义表的类中使用 TemplateColumn。使用 Column ,但使用格式定义一个方法 render_columnname()。比如:

from myfilters import int_to_time

class MyTable(tables.Table):
    time = tables.Column()

    def render_time(self, value):
        return int_to_time(value)

Table.render_FOO() Methods了解更多详情。

关于Django-tables2 - 如何在 TemplateColumn 中使用自定义过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10789680/

相关文章:

python - 代表成员(member)级别的 Django 模型

python - Heroku/app/bin 目录丢失

django-templates - 在 Django 模板中直接使用 GET 和 POST 变量

Django 2.1 密码重置 View 404

python - Django 模板过滤器日期不起作用

Django 模板转义

javascript - Dojo 比使用普通的 Javascript+jQuery 更有帮助吗?

django - 如何合并 django 模板/ View 中的日期范围

javascript - django templatetags 用于 jquery 从 html templatetag 获取项目

django - Twisted 服务器作为 Django 的生产服务器(+ django-wsgi)