如何在模板中获取文件大小?

时间:2012-02-01 11:14:29

标签: django django-template-filters

我有CharField模型:

absolute_path_to_file = models.CharField(max_length=255)

我想显示此文件的模板大小。怎么做?过滤

{{ object.absolute_path_to_file|<????>size</????> }}

3 个答案:

答案 0 :(得分:7)

这是一种使用“自定义过滤器”的方式:

import os
from django import template

register = template.Library()

@register.filter
def filesize(value):
    """Returns the filesize of the filename given in value"""
    return os.path.getsize(value)

该代码应该位于文件夹“templatetags”中的django应用程序中,例如在名为“utils.py”的python模块中。然后,要在模板中使用过滤器,这是一个示例:

{% load utils %}
{{ object.absolute_path_to_file|filesize }}

同样,您可以像这样对过滤器进行补充:

{{ object.absolute_path_to_file|filesize|filesizeformat }}

答案 1 :(得分:4)

改为使用FileField,然后你可以

{{ object.absolute_path_to_file.size }}

答案 2 :(得分:1)

如果您不能使用FileField,那么您可以创建一个custom filter来获取参数并尝试使用标准Python os.path模块获取该文件的大小。< / p>