ryotankの備考録日記

趣味の電子工作についての備考録などなど

電子工作作業報告書管理アプリその51

マイグレーションファイルの生成を実行したら
エラーが出た

ModuleNotFoundError:No module named 'django.shortscuts'

というのが出た

django.shortscutsというモジュールがインストールされてないと
警告された


f:id:ryotank:20220222091259p:plain
マイグレーションファイルの生成時コンソール画面
f:id:ryotank:20220222091340p:plain
マイグレーションファイルの生成時コンソール画面2

この手のエラーはネットには見当たらないなぁ・・

from django.shortcuts import render

とプログラムの先頭でdjango.shortcutsからインポートするのが定石らしい


このrenderメソッドはデータベースのデータなどを反映させたHTMLページを作成し
HTTPレスポンスとしてブラウザに返すみたい

テンプレートファイルにdata1.thmlを表示したいので

from django.views.generic import TemplateView

class Index(TemplateView):
   template_name = "data1.html"


発展1:テンプレートファイルに変数を渡す

viewクラスからテンプレートファイルに変数(message)を渡し、
画面表示する

from django.views.generic import TemplateView

class Index(TemplateView):
	#テンプレートファイルに連携
   	template_name = "data1.html"

	#変数を渡す
	def get_context_data(self. **kwargs):
	     context = super().get_context_data(**kwargs)
	     context["message"] = "フォームに値を入力して下さい"
	     retrun context

get_context_data関数をオーバーライド*する事で

:「親クラスと同じ名前のメソッドを子クラスで

  新たに定義する事」

テンプレートに渡す変数が指定できる

コードの書き方は、引数に可変長引数(**kwargs)を渡し、
続いて最初の行にスーパークラスを実行して
親クラスのコンテキストを取得した後に後続の処理を記載する

テンプレートに渡す変数は、context["変数名"]=値
のように記述する

次回は検証