当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python Django keep_lazy用法及代码示例


本文介绍 django.utils.functional.keep_lazy 的用法。

声明

keep_lazy(func, *resultclasses)[source]

Django 提供了许多实用函数(特别是在 django.utils 中),它们将字符串作为第一个参数并对该字符串执行某些操作。这些函数由模板过滤器以及直接在其他代码中使用。

如果您编写自己的类似函数并处理翻译,您将面临第一个参数是惰性翻译对象时该怎么办的问题。您不想立即将其转换为字符串,因为您可能在视图之外使用此函数(因此当前线程的区域设置将不正确)。

对于这种情况,请使用 django.utils.functional.keep_lazy() 装饰器。它修改了函数,以便 if 以惰性翻译作为其参数之一调用它,函数评估被延迟,直到需要将其转换为字符串。

例如:

from django.utils.functional import keep_lazy, keep_lazy_text

def fancy_utility_function(s, ...):
    # Do some conversion on string 's'
    ...
fancy_utility_function = keep_lazy(str)(fancy_utility_function)

# Or more succinctly:
@keep_lazy(str)
def fancy_utility_function(s, ...):
    ...

keep_lazy() 装饰器采用一些额外的参数(*args)来指定原始函数可以返回的类型。一个常见的用例是具有返回文本的函数。对于这些,您可以将str 类型传递给keep_lazy(或使用下一节中说明的 keep_lazy_text() 装饰器)。

使用这个装饰器意味着你可以编写你的函数并假设输入是一个正确的字符串,然后在最后添加对惰性翻译对象的支持。

相关用法


注:本文由纯净天空筛选整理自djangoproject.com大神的英文原创作品 django.utils.functional.keep_lazy。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。