12月7日にDjangoの4.0がリリースされましたね。 自分も久々に公式サイトを訪れて知りました。 というわけで、自分の学習メモも兼ねてこちらに内容をまとめて置きたいと思います。
Djangoとは
Djangoはpythonで書くことができるwebアプリケーションフレームワークですね~。 めちゃくちゃざっくりいうと、これを使えばwebアプリケーションを作成することができます。 webアプリケーションを作成する際の必要な機能は標準で搭載しているので、迷ったり勉強用におすすめです。
Django 3.2がLTSに
Django3.2.10が2021年12月21日時点でのLTS(長期保守バージョン)となったようです。 Djangoプロジェクトは納期遅延も無くしっかりと管理されて鑑のようなプロジェクト。 ドキュメントもかなりまとまっているので、手堅いアプリケーションを作りたい場合には持ってこいのフレームワークですね。 こういうプロジェクト管理をしてみたい。
<Djangoのリリース計画 Django3.2は2024年までサポート予定>
変更点1 python3.9標準ライブラリのzoneinfoに対応
一つ目は、タイムゾーンの指定方法についての変更ですね。 python3.9で標準ライブラリとして実装されたzoneinfoに対応しました。 タイムゾーンというのは、時刻情報を持ったデータが世界標準時と比べてどれだけ時差を持っているかを持たせるための仕組みですね。 結構、アプリ開発者は悩まされるところだったりします。 設定間違えて、世界標準時がブラウザに表示されたりというのがたまにあったりします。 とくにpythonはタイムゾーンの指定がややこしいですからね。
さてこちらの変更の注意点ですが、これまで多くの方が利用していたであろうタイムゾーンライブラリのpytzが利用非推奨になったことです。 今回のバージョンではまだ扱えますが、次回のバージョンでは扱えなくなります。
変更点2Unique constraintsの追加
こちらは、データベースを操作する際の便利機能ですね。 Unique制約を宣言することで、データベースへの二重登録を禁止することができます。 会員制アプリにおける二重登録防止とかに便利そう。
from django.db.models import UniqueConstraint UniqueConstraint( ## 制約したいフィールドを記載 )
変更点3 パスワードハッシュの暗号強度を強化
パスワードをハッシュ化する機能が強化されました。 暗号強度が上がり、より攻撃者に解読されにくくなるようです。 反面、より多くのメモリを要するのでシステム要件と相談して採用した方が良さそう。 設定ファイルに下記を指定しておけばよさそう。
PASSWORD_HASHERS = [
'django.contrib.auth.hashers.ScryptPasswordHasher',
]
変更点4 Redisのキャッシュ機能をサポート
RedisはいわゆるNoSQLデータベースですね。 これについての機能が強化されるのは大きいのではないでしょうか。 センサー情報の共有など、レイテンシが求められる環境により便利です。 こちらについては、内容が濃いので後日別途まとめるかも。
変更点5 Form, Formsets, ErrorListがテンプレートからレンダリング可能に
お問い合わせフォームに利用するFormやFormsetsだったり、エラー画面を表示するErrorListについて、 テンプレートを用いた画面からレンダリングが可能になったようです。 テンプレートが使えるだけで、作業効率は上がるのでこちらも嬉しい修正ですね。