AssertionError: jinja2 must be installed to use Jinja2Templatesの解決方法

に公開

初めに

Fastapiを使用してHTMLを描画しようとしたらこのようなエラーが出たため解決方法をまとめてみました。まとめるようなことでもありませんが誰かのためになれたら嬉しいです。

解決方法

このエラーの意味は簡単でgoogle翻訳で翻訳すると「AssertionError: Jinja2Templates を使用するには、jinja2 がインストールされている必要があります」になります。なのでjinja2を入れれば解決します。

AssertionError: jinja2 must be installed to use Jinja2Templates

jinja2のインストール方法

pip install jinja2

jinja2とは?

そもそもjinja2とは何かわからなかったので調べてみました。Wikipediaによると

Jinjaは、プログラミング言語Python用のテンプレートエンジンである。Djangoのテンプレートエンジンに似ているが、Pythonライクな式が使えるようになっている。テキストベースのテンプレートエンジンであるため、HTMLやXMLだけでなく、どのようなマークアップの文書でも生成できる。

<h1>{{ title }}</h1>
<ul>
{% for item in items %}
  <li>{{ item }}</li>
{% endfor %}
</ul>

と書かれていることからjinja2は強力なテンプレートエンジンということがわかりました。そう言われてもどのように強力なのか、テンプレートエンジンとは何かがわからなかったので以下のサイトで調べてみました。

https://insights.spovisor.com/jinja2/

上記のサイトによるとテンプレートエンジンとは

HTMLやその他のテキストファイルに動的なコンテンツを簡単に組み込むことができます。

と書かれています。このことからテンプレートエンジンは動的サイトを作るために必要なものなことがわかりました。そしてこのテンプレートエンジンというものはMVCパターンに当たるらしくメンテナンスが容易になるそうです。

MVCパターンとは?

今回は以下のサイトで調べてみました。

https://system-kaihatu.com/archives/3204

上記のサイトには

MVCモデルとは、プログラムを役割ごとにModel(モデル)・View(ビュー)・Controller(コントローラー)の3つに分けて管理するソフトウェア設計モデルのことです。

ということが書かれています。正直Model(モデル)・View(ビュー)・Controller(コントローラー)の3つに分けて管理するソフトウェア設計モデルと言われても知識がなくわからなかったのですが簡潔にまとめられていたので紹介します。

Model(モデル)

Model(モデル)とはFastapiやDjangoにおけるデータの登録・更新・削除を行うらしいです。要するにバックエンドの部分というわけだと思います。

View(ビュー)

View(ビュー)とはHTMLなどユーザーが実際に見る画面にあたるそうです。

Controller(コントロール)

Modelにデータ処理の指示を出したり、Viewに画面表示の指示を出したりするらしいです。

気づき

この3つのことをまとめてMVCモデルということがわかりました。今まで知識もあまりない状態でflet(フルスタック)を使用してやっていたので気づきませんでしたがMVCモデルと使用することでコードをきれいにしてメンテナンスを行いやすくできたりすることがわかりました。

Discussion