Как использовать формат файла Django - PullRequest
3 голосов
/ 04 апреля 2010

У меня есть небольшое приложение, над которым я пытаюсь использовать встроенный в Django формат файла. В настоящее время формат выглядит так: {{ value|filesizeformat }}. Я понимаю, что мне нужно определить это в моем файле view.py, но я не могу понять, как это сделать. Я попытался использовать синтаксис ниже:

def filesizeformat(bytes):
    """
    Formats the value like a 'human-readable' file size (i.e. 13 KB, 4.1 MB,
    102 bytes, etc).
    """
    try:
        bytes = float(bytes)
    except (TypeError,ValueError,UnicodeDecodeError):
        return u"0 bytes"

    if bytes < 1024:
        return ungettext("%(size)d byte", "%(size)d bytes", bytes) % {'size': bytes}
    if bytes < 1024 * 1024:
        return ugettext("%.1f KB") % (bytes / 1024)
    if bytes < 1024 * 1024 * 1024:
        return ugettext("%.1f MB") % (bytes / (1024 * 1024))
    return ugettext("%.1f GB") % (bytes / (1024 * 1024 * 1024))
filesizeformat.is_safe = True 

Затем я заменил «значение» на «байты» в шаблоне, но, похоже, это не работает. Есть предложения?

1 Ответ

9 голосов
/ 04 апреля 2010

filesizeformat - это встроенный фильтр, вам не нужно реализовывать его самостоятельно. Вы должны указать значение в шаблоне, например:

{% for page in pages %}
    <li>page.name {{page.size|filesizeformat}}</li>
{% endfor %}

Теперь, когда вы визуализируете шаблон из представления, укажите аргумент pages, который представляет собой список слов, таких как:

[{'name': 'page1', 'size': 10000}, {'name': 'page2', 'size': 5023034}]

и т. Д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...