2

我有一个ListView返回对象列表的泛型。

在我决定为每个对象打印自创建时间(不仅仅是创建对象时)以来经过了多少时间之前,一切都很好

然后我需要一段代码来计算它,我需要将结果传递给模板。但现在我不能使用通用视图。

我想过context processors,但context processorsrequest作为一个参数,我还需要给它id一个对象来计算时间增量。

那么,有没有办法使用通用视图或上下文处理器来实现它,或者我必须编写自定义视图?或者,还有更好的方法?


更新

谢谢大家的详细解答,以后对我有很大帮助。

我了解到可以使用timesince 内置模板标签来解决上述任务。希望它会帮助某人。

4

2 回答 2

2

您可以覆盖get_context_data并将更多数据添加到上下文字典:

class MyView(ListView):
    # ...

    def get_context_data(self, **kwargs):
        context = super(MyView, self).get_context_data(**kwargs)
        context['mydata'] = ...
        return context

然后您可以mydata在模板中使用。

您还可以访问context['object_list']其中包含将在模板中显示的对象列表。

于 2013-11-08T12:36:30.313 回答
1

如果您需要在特定 ListView 的上下文中添加更多内容,Simeon 的答案是显而易见的,但如果您需要不直接依赖于视图本身的内容,您也可以使用自定义模板标签或过滤器。在您的情况下,从任何日期或日期时间计算增量的简单过滤器可能是票证。额外奖励:您可以在任何模板中的任何日期重复使用它,而无需更改视图中的任何内容......

于 2013-11-08T12:57:47.927 回答