你能解释一下ugettext和ugettext_lazy的主要区别吗?
当我试着
return HttpResponse(ugettext_lazy("Hello"))
Run Code Online (Sandbox Code Playgroud)
我什么都没看到,但是
return HttpResponse(ugettext("Hello"))
Run Code Online (Sandbox Code Playgroud)
工作中.
为什么?
谢谢.
Ned*_*der 40
ugettext用来加载一个字符串的解释现在. ugettext_lazy返回一个最终可以转换为字符串的对象.如果在ugettext_lazy设置正确的语言环境之前评估调用,则需要这样做.
ugettext_lazy可以在使用Unicode对象的地方使用.仔细检查您的HTML输出,它可能如下所示:
<django.utils.functional...>
Run Code Online (Sandbox Code Playgroud)
并且浏览器将其全部忽略为无法识别的标记.
在这种情况下,您不需要延迟转换,因为您正在使用该字符串.如果你真的想因某种原因继续使用ugettext_lazy,试试这个:
return HttpResponse(ugettext_lazy("Hello").encode('utf-8'))
Run Code Online (Sandbox Code Playgroud)
有关更多信息,请参阅文档.