1. リクエストとレスポンス#
プロジェクトの作成#
django-admin startproject <プロジェクト名>
でプロジェクトを作成
Info
- プロジェクト名は、組み込みの Python モジュールや Django のコンポーネントの名前を使わないようにすること
- 例えば、 django (Django 自体と名前が衝突します) や test (組み込みの Python パッケージ名と名前が衝突します) を使わないこと
実行後、現在のディレクトリに <プロジェクト名>
ディレクトリが作成される。
生成されたファイルについての説明は以下の通り
manage.py
: Django プロジェクトに対する様々な操作を行うためのコマンドラインユーティリティmysite/__init__.py
: Python パッケージであることを Python に知らせるための空のファイルmysite/settings.py
: Django プロジェクトの設定ファイルmysite/urls.py
: Django プロジェクトの設定ファイルmysite/asgi.py
: Django プロジェクトの URL 宣言、Django サイトにおける「目次」に相当mysite/wsgi.py
: プロジェクトをサーブするためのWSGI互換Webサーバーとのエントリーポイント
Django のプロジェクトがうまく動作するか、python manage.py runserver
を実行して確認
(venv) C:\Users\omron\Documents\20_Python\dev\Django\mysite> python manage.py runserver
Watching for file changes with StatReloader
Performing system checks...
System check identified no issues (0 silenced).
You have 18 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): admin, auth, contenttypes, sessions.
Run 'python manage.py migrate' to apply them.
December 31, 2022 - 21:01:14
Django version 4.1.4, using settings 'mysite.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CTRL-BREAK.
Info
- ポート番号は
python manage.py runserver 8080
のように実行することで指定可能 - 全ての IP からのリクエストを受け付けるには
python manage.py runserver 0.0.0.0:8000
のように実行する
Polls アプリケーションの作成#
- ここまでの作業でプロジェクトが立ち上がり、作業にとりかかる準備ができた状態。
- Django 内に追加する各アプリケーションは、所定の規約に従った Python パッケージで構成される。
-
Django には基本的なディレクトリ構造を自動生成するユーティリティが含まれており、ディレクトリを作ることではなくコードを書くことに集中できる。
-
この例では
manage.py
ファイルと同じディレクトリにポーリングアプリを作成する。 manage.py
ファイルと同じディレクトリでpython manage.py startapp polls
を実行する。- 実行後以下のディレクトリとファイル群が生成される(アプリケーションのメインフレームにあたる)
ビュー作成#
polls/views.py
のファイルに以下を記述
from django.http import HttpResponse
def index(request):
return HttpResponse("Hello, world. You're at the polls index.")
ビューを呼ぶためにURLを紐付ける必要があり、そのためには URLconf
が必要。
polls ディレクトリに URLconf
を作るには urls.py
というファイルを作成する。
アプリのディレクトリは以下のようになるはず。
polls/urls.py
ファイルを作成し、以下のように記述する
from django.urls import path
from . import views
urlpatterns = [
path('', views.index, name='index'),
]
次にルートのURLconf
に polls.urls
モジュールの記述を反映させる。
mysite/urls.py
に django.urls.include
の import
を追加し、 urlpatterns
のリストに include()
を挿入。
```py title=""mysite/urls.py from django.contrib import admin from django.urls import include, path
urlpatterns = [ path('polls/', include('polls.urls')), path('admin/', admin.site.urls), ] ```
include()
関数は他の URLconf への参照を可能にする。
Django が include()
に遭遇すると、そのポイントまでに一致した URL の部分を切り落とし、次の処理のために残りの文字列をインクルードされた URLconf へ渡す。
include()
の背景にある考えは、 URL を簡単にプラグ & プレイ可能にすること。
polls には独自の URLconf (polls/urls.py) を持っており、 /polls/
、 /fun_polls/
や、 /content/polls/
といった、どんなパスルート下にも置けて、どこに置いてもきちんと動作する
ここまでの作業で index ビューを URLconf に紐付けることができている状態
python manage.py runserver
を実行して、動作を確認
ブラウザで http://localhost:8000/polls/
にアクセスすると、 "Hello, world. You're at the polls index." と表示されるのが確認できる