2013-05-07 68 views
0

我希望這個問題不在這裏,我已經長時間搜索它並沒有發現任何東西。我在模板中格式化數字時遇到了問題,但有點特別。也許,這是如何調用從簡單標籤返回的值的過濾器的全部問題。因此,首先,一些事實:使用python 2.7和Django的1.5 Django模板:從簡單標記返回的本地化號碼

  • 在捷克語中,我們使用逗號「」作爲小數點分隔符和optionaly空間‘’

    • 爲千位分隔符(更多的時候是寫沒有千位分隔符的數字)。
    • 正常情況下,通過{{ price }}的書寫號碼正在打印,例如, 16,0

    出於某種原因,我在模板與數字的工作:

    {% count_basic price.leafletPrice.price product.amount product.amount_unit product.category.basic_amount product.category.basic_amount_unit %} 
    

    數基本是簡單的標籤:

    from django import template 
    
    register = template.Library() 
    
    @register.simple_tag 
    def count_basic(price, product_amount, product_unit, category_amount, category_unit): 
        if product_unit == 'mililiter' or product_unit == 'gram': 
         return (float(price)/product_amount) * 1000 
        else: 
         return float(price)/product_amount 
    

    結果是,豈不等於打印爲16.0。我在settings.py本地化設置爲True:

    USE_I18N = True 
    USE_L10N = True 
    

    我也發現了「人性化」的工作,但首先,我不知道該怎麼稱呼簡單的標籤/過濾器值從另一個簡單的標籤返回(可能使用with?),其次,如果它正常工作,爲什麼不從簡單標籤返回數字?這個數字是不是很重要?應該轉換?我試過也返回值爲Decimal()而不工作。

    任何簡單的工作解決方案表示讚賞。

  • 回答

    0

    好的,最後,我已經找到了如何做到這一點。我已經改變了我的簡單的標籤,特別是回部分(縣):

    from django.template.defaultfilters import floatformat 
    
    return floatformat(float(price)/product_amount, 2) 
    

    floatformat做出模板來顯示數字格式化,用逗號作爲小數點分隔符。請求兩位小數(floatformat的第二個參數)。