Wagtail: 不建议使用uggettext函数

创建于 2020-02-18  ·  5评论  ·  资料来源: wagtail/wagtail

发行摘要

django.utils.translation调用ugettext(), ugettext_lazy(), ugettext_noop(), ungettext()ungettext_lazy()函数中的任何一个都会引发RemovedInDjango40Warning弃用警告。

重现步骤

  1. 在安装了Django 3.0的Wagtail项目中启用警告的情况下启动开发服务器: python -Wall manage.py runserver
  2. 观察输出。 它将输出数十个与此警告类似的警告:
/Users/stormh/torchbox/wagtail/wagtail/admin/edit_handlers.py:762: RemovedInDjango40Warning: django.utils.translation.ugettext_lazy() is deprecated in favor of django.utils.translation.gettext_lazy().
  'heading': ugettext_lazy('Scheduled publishing'),
  • 我已经确认可以按照新的Wagtail项目中的描述重现此问题:是

ugettext函数已在Django 3.0中弃用

弃用的原因是这些是它们对应的gettext对应物的旧别名。 根据此票证,它们曾经用于与python 2.7的unicode兼容性

我们该如何解决呢?

我们应该将所有对ugettext函数的引用替换为其对应的gettext 。 这应该没有负面影响,因为Wagtail不再支持Python 2.7,并且此更改将与Django 2.2 LTS兼容。

现在,我们是否必须急于执行此更改? 不,不是。 ugettext函数计划在Django 4.0中删除。 根据我从https://www.djangoproject.com/download/上获得的这张图表,该文件计划于2022年发布。

但是,最好消除那些讨厌的过时警告,因为我的项目是最新的体验👌

技术细节

  • python版本:3.8.1
  • Django版本:3.0.3
  • 版本:2.9a0
  • 浏览器版本:不适用
Django i18n good first issue Bug

最有用的评论

@danihodovic取决于您的用例,这是在运行pytest时如何隐藏它们的方式。

[pytest]
filterwarnings =
    ignore::django.utils.deprecation.RemovedInDjango40Warning

所有5条评论

在解决此警告之前,是否有任何方法可以使其静音?

@danihodovic取决于您的用例,这是在运行pytest时如何隐藏它们的方式。

[pytest]
filterwarnings =
    ignore::django.utils.deprecation.RemovedInDjango40Warning

谢谢@marteinn

已在#5907中完成,但是由于合并现有PR很有可能会出现新情况,因此我将对此保持开放状态,以提醒我们在2.9版本之前进行另一次扫描。

经过重新检查,没有新的事件发生,所以我认为我们都很好👍

此页面是否有帮助?
0 / 5 - 0 等级