优化可进行API调用的自定义模板标签

时间:2018-09-18 10:18:35

标签: django

我有一个很好的模板标签,但是当我在模板中多次使用它时,整个页面的加载时间过长。我该如何改善呢?

@register.simple_tag
def converted_currency(amount, currency, default_user_currency, date=timezone.now()):
    c = CurrencyConverter('http://www.ecb.int/stats/eurofxref/eurofxref-hist.zip', fallback_on_wrong_date=True, fallback_on_missing_rate=True)
    converted_value = c.convert(amount, currency, default_user_currency, date=date)
    return Decimal(converted_value).quantize(Decimal("0.00"))

使用的库:https://pypi.org/project/CurrencyConverter/

1 个答案:

答案 0 :(得分:0)

您可以进行一次CurrencyConverter,所有模板标记调用都使用该实例

请参见下文

currency_converter = CurrencyConverter('http://www.ecb.int/stats/eurofxref/eurofxref-hist.zip', 
                                       fallback_on_wrong_date=True,
                                       fallback_on_missing_rate=True)

...

@register.simple_tag
def converted_currency(amount, currency, default_user_currency, date=timezone.now()):
    converted_value = c.convert(amount, currency, default_user_currency, date=date)
    return Decimal(converted_value).quantize(Decimal("0.00"))

您还可以在其上设置过期时间,并在实例过期时刷新实例