具有附加参数的通用视图(如果可能)或上下文处理器,以便向模板传递额外信息?

2024-04-24 23:42:14 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个通用的ListView,它返回一个对象列表。你知道吗

在我决定为每个对象打印自创建时间以来经过的时间(不仅仅是对象创建的时间)之前,一切都很好。你知道吗

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

我考虑过context processors,但是context processors只把request作为参数,我还需要给它一个对象的id来计算时间增量。你知道吗

那么,有没有办法使用通用视图或上下文处理器,或者我必须编写一个自定义视图?还是有更好的办法?你知道吗


更新

谢谢大家详细的回答,以后会对我有很大的帮助。你知道吗

我知道上面提到的任务可以用timesince built-in template tag来解决。希望它能帮助别人。你知道吗


Tags: 对象代码视图模板id列表参数request
2条回答

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

您可以重写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'],其中包含将在模板中显示的对象列表。你知道吗

相关问题 更多 >