Python Django模板-使用变量的正确方法

Python Django模板-使用变量的正确方法,python,django,templates,variables,video,Python,Django,Templates,Variables,Video,我刚刚开始使用Django,我有以下场景: 我有一个model类Video,我正在通过helper方法计算它的长度,它不是一个属性(至少目前是这样) 所以我在视频类中使用了一个方法,我们可以在视频对象上调用这个方法,比如 length = video_obj.video_length() 以秒为单位计算长度 我的问题是,当在页面上列出一组视频时(我只是在模板中迭代视频,没有向模板传递视频对象),如何以minutes:seconds格式显示长度 我想到了以下几点: 在该页的控制器中调用vide

我刚刚开始使用Django,我有以下场景:

我有一个model类
Video
,我正在通过helper方法计算它的长度,它不是一个属性(至少目前是这样)

所以我在视频类中使用了一个方法,我们可以在视频对象上调用这个方法,比如

length = video_obj.video_length()
以秒为单位计算长度

我的问题是,当在页面上列出一组视频时(我只是在模板中迭代视频,没有向模板传递视频对象),如何以
minutes:seconds
格式显示长度

我想到了以下几点:

  • 在该页的控制器中调用video_length()函数,然后将值作为自定义变量传递,但这不是特定于视频的(我不会在控制器中迭代视频)

  • 最后,请将其添加为属性

请建议最好的实施方法。提前感谢您的建议。

您可以/应该完成此任务,因为知道如何格式化日期不是管理员的责任,而是模板

然后,您可以为fat模型的情况进行辩论,我完全支持,但您可能希望更改另一个视图的格式,并且使用许多不同的格式方法只会使类膨胀

import datetime

def formatted_length(value):
    """ 
       Formats the time in seconds to time in hours:minutes:seconds
    """
    return str(datetime.timedelta(seconds=value))
然后你可以像这样在模板中使用它

{{ video_obj.video_length|formatted_length }}

您可以在方法上方添加
@property
装饰器,并在模板中访问
video.video\u length


如果它以秒的整数返回,那么您可以轻松创建一个过滤器,将其转换为分:秒。

谢谢您的回答。我将您的两个建议结合起来解决了我的问题!谢谢你的回答。我结合了你的两个建议来解决我的问题!