Wagtail: uggettext関数の使用は非推奨です

作成日 2020年02月18日  ·  5コメント  ·  ソース: wagtail/wagtail

問題の概要

いずれかの呼び出しugettext(), ugettext_lazy(), ugettext_noop(), ungettext()ungettext_lazy()から関数をdjango.utils.translation発生します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関数はDjango3.0で非推奨になりました

非推奨の理由は、これらが対応するgettext対応物のレガシーエイリアスであるためです。 このチケットによると、Python2.7とのUnicode互換性のためにかつて使用されていました

これをどのように解決しますか?

ugettext関数へのすべての参照を、対応するgettext置き換える必要があります。 WagtailはPython2.7をサポートしなくなり、この変更はDjango 2.2 LTSと互換性があるため、これによる悪影響はありません。

さて、この変更の実装を急ぐ必要がありますか? いいえ、そうではありません。 ugettext関数は、Django4.0で削除される予定です。 https://www.djangoproject.com/download/から取得したこのチャートによると、2022年にリリースされる予定です

ただし、my-project-is-fully-up-dateエクスペリエンスに対するこれらの厄介な非推奨の警告を取り除くのは良いことです👌

技術的な詳細

  • 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 評価