🙆‍♀️

django Hello Worldと表示する

2022/08/21に公開

備忘録です。

環境

anaconda3 4.12.0
django 4.1

アプリの作成

プロジェクトのフォルダ内で下記コマンド実行

python manage.py startapp アプリ名

プロジェクトを最初に作成した際に生成されたファイル郡の内、使用するのは基本的に下記二つ
\プロジェクト名\urlse.py
\プロジェクト名\settings.py

また、manage.pyは全てのトリガーとなるファイルらしいです。
アプリ追加する時にコマンドに登場しているのもこのファイルです。

settings.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をいじる

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