T.lazy在web2py中做了什么?

时间:2011-11-10 13:19:01

标签: internationalization web2py

我正在学习web2py。我读了示例开源代码。在一个应用程序(storpy)中,程序员在模型文件T.lazy内重复使用db.py,如下所示:

...
Field('comment', 'text'),
Field('cover', 'upload', autodelete=True))

T.lazy = False
db.dvds.title.requires = [IS_NOT_EMPTY(error_message=T('Missing data') + '!'), IS_NOT_IN_DB(db, 'dvds.title', error_message=T('Already in the database') + '!')]
...
T.lazy = True

为什么程序员首先将T.lazy设置为False然后设置为True

1 个答案:

答案 0 :(得分:5)

默认情况下,T()是惰性的 - 当你调用它时,它实际上不会进行转换,而是返回一个lazyT对象,直到在视图中序列化后才会对其进行转换。如果设置T.lazy=False,则会强制立即转换,因此调用T('some string')将返回实际翻译的字符串而不是lazyT对象。

请注意,从即将发布的版本开始,您无需切换T.lazyFalseTrue,您就可以执行T('some string', lazy=False)强制立即翻译一个电话。强制立即翻译的其他方法有str(T('some string'))T('some string').xml() - str()序列化lazyT对象(.xml()只调用str())。