T.lazy 在 web2py 中做了什么?

发布于 2024-12-14 21:03:06 字数 507 浏览 3 评论 0原文

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

...
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

Why does the Programmer set T.lazy 首先到 False 然后再到 True

I am studying web2py. I read example open source code. In one application (storpy), the programmer uses T.lazy repeatedly inside the models file db.py such as this:

...
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

Why does the programmer set T.lazy first to False then to True?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

内心荒芜 2024-12-21 21:03:06

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

请注意,从即将发布的版本开始,您将能够执行以下操作,而不必将 T.lazy 切换为 FalseTrue >T('some string',lazy=False) 强制立即翻译单个调用。强制立即翻译的其他方法是 str(T('some string'))T('some string').xml() -- str( ) 序列化lazyT 对象(.xml() 只是调用str())。

By default, T() is lazy -- when you call it, it doesn't actually do the translation but instead returns a lazyT object, which isn't translated until serialized in a view. If you set T.lazy=False, that will force immediate translation, so calling T('some string') will return the actual translated string instead of a lazyT object.

Note, starting with the upcoming release, instead of having to toggle T.lazy to False and True, you will be able to do T('some string', lazy=False) to force an immediate translation for a single call. Other ways to force immediate translation are str(T('some string')) or T('some string').xml() -- str() serializes the lazyT object (and .xml() simply calls str()).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文