2019/12/07

【Python】Djangoを3.0にアップデートしたらtranslation.E004エラーでサーバを起動できなくなった話

久方プログラミングネタ.先日,会社で「カエリタ……カエリタ……」ってぼやきながら仕事をしていたらGitHubからメールが来て,要約すると「お前のレポジトリのDjangoのバージョン,古いからバージョンアップのプルリク出しとくぞ」というものだった.

見たところ,2.2.8より前の一部バージョンで脆弱性があったらしく,Pipfileでそれを検知したのかバージョンアップ用のプルリクが自動で飛んできていた.すげえなGitHub.

で,お遊びでデプロイしているものとは言っても,脆弱性があるのは流石にまずいのでアップデート対応をした……したのだが,素直にそのプルリクを飲むのではなく,自分でブランチを切ってアップデートしてみたら思わぬところで詰まったのでその話.

Sponsored Link

バージョンアップにご用心

GitHubからのプルリクのバージョンは2.2.8へのアップデート.

ところが,自分で

pipenv update --outdated
pipenv update

したらDjangoのバージョンが3.0になった.ただしこのときはまだ気づいていない.

一応ローカルで動作確認しとくか,ということで

python manage.py runserver

したところ,帰ってきたのは

translation.E004) You have provided a value for the LANGUAGE_CODE setting that is not in the LANGUAGES setting

なるエラー.言語コードなんていじってないんだけどなあ……と思いつつ,settings.pyを見ると

LANGUAGE_CODE = 'ja-JP'

と書いてある.これ(ja-JP)がLANGUAGES settingにないんじゃい,と怒られてるらしい.

ぐぐってたらstackoverflowのこれを見つけた.Django 3.0以降,Djangoのglobal_settings.pyにあるコードを厳密に指定しないとエラーが出るらしいとのこと.んで,その設定を見に行ってみると日本語の設定は"ja-JP"ではなく"ja"だった.

考えてみるとJPは国コードで言語コードじゃないんだよなあ,という当たり前の話.2.xではエラーにならなかったが,単純に設定をミスってたらしいというオチ.なんとなく設定するんじゃなく,こういうところも参照しながらやらないとなあ,と思った.

0 件のコメント:

コメントを投稿