前回は、電子書籍「速習Django3」に沿いつつ、しかし別の方法(Anacondaによりパッケージ管理)で、環境作成(Python動作環境、必要なライブラリのインストール)、仮想環境作成、新規プロジェクト作成、初期規定のアプリ表示、機能追加したアプリをviews.pyから直接出力表示するところまで実施し、それに対しての、ふりかえり(反省)を行ってみました。
(仮想環境名は「Python_Django_sokusyu3_01」、新規プロジェクト名は「Python_Django_sokusyu3_01_PJ」、新規アプリケーション名は「main」でした)
今回は、新たに(views.pyからの直接出力表示ではなく)Djangoのテンプレート(TDL)を利用して、アプリケーション作成(機能追加)するところまで進めてみました。
以下は、その作業記録(備忘録)です。
1.今回の作業の流れ
(1)方針
(詳しい事は電子書籍「速習Django3速習シリーズ」を見て頂ければと思うのですが)
要は、
・前回実施したのは、あくまで、viewsから直接出力表示しただけに過ぎない。
・理想としては、MTV(Model-Template-Viewの略)の考え方に従って、DTL(Django-Template-Languageの略)を用意(TemplateエンジンはDjango標準装備だが、Template自体は手動で作成)し、それ経由で(ブラウザで)出力表示するべきだ。
ということが書かれています。
故に、今回は、これに沿った、作業の流れになります。
※以降の手順前後は書籍とは少し順番を変えてあります。
2.手順(テンプレートを追加して、アプリケーションを表示する)
ここから、新たに(views.pyからの直接出力表示ではなく)Djangoのテンプレート(TDL)を利用して、アプリケーション作成(機能追加)していきます。
以下はその手順です。
(1)テンプレート格納用フォルダ作成
(前回作成した)アプリケーション(main)配下に、
¥templates¥main2
というフォルダを作成します。
(※以降の説明では、(前回作成した)mainアプリケーションは、アプリケーション(main)、
そして、(今回追加した)main2フォルダは、テンプレート(main2)、と表記しています。)
(2)テンプレートファイル作成
(上記(1)で作成したテンプレート(main2)フォルダに)手動で、
temp.html を作成します。
利用者は、Webサーバ起動後、ブラウザでこのページを閲覧することになります。
(3)(settings.pyへの)テンプレート登録
(上記で作成したテンプレートを)settings.py のINSTALLED_APPS に追加します。
’main.templates’,
(※(アプリケーション(main)フォルダ配下を基準として)¥templates¥main となる、と考えて下さい。)
(settings.py の拡大図)
(4)URL情報登録
(ブラウザーで、http://localhost:8000/main/temp と指定した時に表示させたいので)
(アプリケーション(main)フォルダ配下の)urls.py の urlpatternsに、
path(‘temp‘, views.temp, name=’temp’),
と登録します。(※下線の部分が、同じであれば、良いです。後の部分のtempは、決めの問題です)
※元々のアプリケーション(main)の基準URLは、http://localhost:8000/main/ 、
そこを基準に、その配下に、tempをつけて指定させた場合の処理を宣言しています。
(urls.pyの拡大図)
(5)(views.pyへの)temp関数追加
上記④で登録した文言に、views.temp, name=’temp’ がありましたが、このtempです。
このtempの実態を、ここに作成します。
def temp(request):
# a. ビュー変数を準備
context = {
‘msg’:’こんにちは、世界!※temp.htmlから出力表示(電子書籍「速習Django3速習シ
リーズより」’
}
# b. テンプレートを呼び出す
return render(request, ‘main2/temp.html’,context)
(views.pyの 拡大図)
(6)マイグレーション実施
python manage.py migrate
(7)Webサーバ起動
python manage.py runserver
(8)ブラウザーでアプリケーション(をビュー関数から)表示
ブラウザーで、以下のURLを、表示する。
http://localhost:8000/main/temp
以上で、アプリケーションを、テンプレート(temp.html)から出力表示ができたことになります。
3.ふりかえり(viewsから直接出力表示と、テンプレート(temp.html)による出力表示)
viewsから直接出力表示したものと、テンプレート(temp.html)による出力表示したものは、下図の通り、ほぼ同じですが、後者の方が、HTMLによる制御により、いろいろと、カスタマイズ制御し易いことが、…分かりますよね?