前回は、電子書籍「速習Django3」に沿いつつ、しかし別の方法(Anacondaによりパッケージ管理)で、環境作成(Python動作環境、必要なライブラリのインストール)、仮想環境作成、新規プロジェクト作成、初期規定のアプリ表示、機能追加したアプリをviews.pyから直接出力表示するところまで実施してみました。(仮想環境名は「Python_Django_sokusyu3_01」、新規プロジェクト名は「Python_Django_sokusyu3_01_PJ」、新規アプリケーション名は「main」でした)
前回作業で、自分なりに、印象に残った点、苦労した点、気づいた点を以下に記録しました。
以下は、その作業記録(備忘録)です。
1.前回(viewsから直接出力表示)での作業の振り返り
前回作業で、自分なりに、印象に残った点、苦労した点、気づいた点を以下に記録しました。
(1)settings.pyのINSTALLED_APPSへの登録情報が意味不明だった!
前回は、プロジェクト(Python_Django_Skusyu3_01_PJ)に、アプリケーション(main)を作成し、プロジェクトのsettings.pyのINSTALLED_APPSに、アプリケーション登録として、
’main.apps.MainConfig’, という文言を
(電子書籍「速習Django3速習シリーズ」に書いてあるままに)追加しました。(以下の追加1)
しかし、「なぜ、この文言になるのか?」と疑問がありましたが…すぐに解決しました。
Djangoでは、アプリケーション新規作成直後に、(アプリケーション(main)配下の)apps.pyに、アプリケーション情報が登録されていたのです。(下図)
(上図の)MainConfigクラス、これが、さっきのsetting.pyのINSTALLED_APPSに追記した
’main.apps.MainConfig’, の、右側部分の、MainConfig部分だったんですよね。
…で、残った、左側部分の、main.apps ですが、これは、右側の、appsは、アプリケーションですよ、という意味で、mainは、アプリケーション名となり、これは納得すれば済む話でした。
(2)Webサーバ起動時、URL情報の矛盾エラーが消せない!でも何が間違いなのかわからない!!
Webサーバを起動(python manage.py runserver)しても、あれが無いだ、これが無いだ、見つからないだ、存在しませんだ、と際限なくエラーが表示されてしまい、参りました。
いや、理屈は(なんとなく)分かってたんですが、目が、泳いでしまって、urls.py(プロジェクトとアプリケーションの2つあるし)見てから、views.py見に行って、よくわかなくなって、settings.pyとかapps.pyとか見に行って、…と(眠かったのもありますが)エラーが消えない…。
そこで、「あ、自分も、Djangoになろう、この人と同じ順番で、同じことを考えよう」ということになり、以下の点を整理しました。
(a) Djangoは、Webサーバ起動時に、決まった順番で、pyファイルを見に行っている!
これについては(別記事「[基礎知識]DjangoでWebサーバー起動後に、各Pyファイルを(Django)が読んでいく順番について」)に記載してありますが、要は、この順番で、各pyファイルを見ていかないと、エラーメッセージの意味が分からない、ということでした。
(b) urls.pyは2つある!プロジェクト配下とアプリケーション配下で、見方が違う!
プロジェクト配下のurls.pyでは、’admin/’ となっていたら、’http://localhost:8000/admin’ を意味し、アプリケーション(main)配下のurls.pyでは、’http://localhost:8000/main/admin/’ を意味するんですよね。
気づいた後「あー、自分は絶対パスも相対パスもわかっていないのか」位にがっくりきました。
まる一日悩んだ後、分かってみたら、なんだこんなことかとなりましたが…(;^ω^)