2010-04-04 70 views
3

我有一個小應用程序,我正在嘗試使用Django內置的filesizeformat。目前,格式如下所示:{{ value|filesizeformat }}。我知道我需要在我的view.py文件中定義這個,但是,我似乎無法弄清楚如何做到這一點。我試着用下面的語法:如何使用Django的文件格式

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 

我然後在模板取代「價值」與「字節」,但是,這似乎並沒有工作。有什麼建議麼?

回答

9

filesizeformat是一個內置的過濾器,你不需要自己實現它。你應該提供的價值爲模板,例如:

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

現在,當你渲染視圖中的模板提供一個pages參數,它是像類型的字典列表:

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

等等。

+0

Eli, 感謝您的信息。非常感激。爲我工作就像一個魅力。 – beamupscotty 2010-04-05 11:39:38

相關問題