當前位置: 首頁>>編程示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。