django Hello Worldと表示する
備忘録です。
環境
anaconda3 4.12.0
django 4.1
アプリの作成
プロジェクトのフォルダ内で下記コマンド実行
python manage.py startapp アプリ名
プロジェクトを最初に作成した際に生成されたファイル郡の内、使用するのは基本的に下記二つ
\プロジェクト名\urlse.py
\プロジェクト名\settings.py
また、manage.pyは全てのトリガーとなるファイルらしいです。
アプリ追加する時にコマンドに登場しているのもこのファイルです。
settings.py修正
# Application definition
INSTALLED_APPS = [
"django.contrib.admin",
"django.contrib.auth",
"django.contrib.contenttypes",
"django.contrib.sessions",
"django.contrib.messages",
"django.contrib.staticfiles",
"作成したアプリ名",
]
最後に追加しました。
こうすることでプロジェクトにあるアプリを認識することができて、アプリの機能を動作させることができるようになるような感じかと解釈しました。
画面になにか表示してみる
フォルダを作成
アプリフォルダ内に「templates」というフォルダを作成する
その中に「index.html」を作成。
<h1>Hello World</h1>
views.pyをいじる
from django.views.generic import TemplateView
class IndexView(TemplateView):
template_name = "index.html"
これで実行
python manage.py runserver
表示できました。
できたけど何が起きたかよくわからないから調べた
Djangoは画面が表示されたときに呼び出される順番や、その呼び出し方を理解しないとだいぶきつそうでした。
クライアントがURLにアクセス
↓(リクエスト)
①urls.py(プロジェクト内)が呼び出される
settings.pyで追加したアプリのurls.pyを呼び出す
↓
②urls.pyが(アプリ内)呼び出される
受け取ったURLから実行するviews.pyの関数やクラスを選択する
つまり、urls.pyにはURLとviews.pyファイル内の関数やクラスを紐づける記述をするということになるのかなと思います。
↓
③views.py(forms.py)が呼び出される
urls.pyの内容から呼び出された関数やクラスが実行される
その関数やクラスには、クライアント側にレスポンスとして返すファイル、データを記述するみたいです。
ざっくり流れはこんな感じみたいです。
それぞれ書き方もルールがあるみたいなのでまたやりながら覚えていきたいです。
Discussion