Django の使い方 -Webアプリをつくる-
Django を使った Web アプリの作り方の基本。Django のインストールから、アクセスする URL とそれに関連するファンクションや画面との紐づけ方。
インストール
$ pip3 install Django
プロジェクト作成
$ django-admin startproject PROJECT_NAME
自動で以下が生成される。
PROJECT_NAME/ manage.py PROJECT_NAME/ __init__.py settings.py urls.py asgi.py wsgi.py
外側の PROJECT_NAME ( = ルートディレクトリ ) は、プロジェクトのコンテナ。ここのフォルダ名は変更好きな名前に変更することができる。
内側の PROJECT_NAME が実際の Python パッケージとなっている。
Web サーバーの起動
外側の PROJECT_NAME ( ルートディレクトリ ) に移動する。
$ cd PROJECT_NAME
$ python manage.py runserver
アプリケーションの作成
Django は大きなプロジェクトを構築できるフレームワークであり、 1 つのプロジェクトの中に複数のアプリを作れるようになっている。
プロジェクトの中に新しいアプリを作ってみる。
プロジェクトとアプリの違いは以下を参照。
プロジェクトとアプリの違いは何でしょうか? アプリとは、ウェブログシステム、公的記録のデータベース、小規模な投票アプリなど、何かを行う Web アプリケーションです。プロジェクトは、特定のウェブサイトの構成とアプリのコレクションです。プロジェクトには複数のアプリを含めることができます。 アプリは複数のプロジェクトに存在できます。
https://docs.djangoproject.com/ja/3.0/intro/tutorial01/
アプリの作成
以下のコマンドでアプリが生成される。
$ python manage.py startapp APP_NAME
ルートディレクトリの中に、以下が自動生成される。
APP_NAME/ __init__.py admin.py apps.py migrations/ __init__.py models.py tests.py views.py
アプリの登録
PROJECT_NAME/PROJECT_NAME/settings.py の INSTALLED_APPS
というところに作ったアプリ名を登録する。
# settings.py
INSTALLED_APPS = [
'APP_NAME',
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
]
INSTALLED_APPS
には、このプロジェクトにインストールされたアプリが書かれている。 Django によってすでにいくつかのアプリがインストールされている。
view の作成
APP_NAME/views.py を開き、例えば以下を書く。
# views.py
from django.http import HttpResponse
from django.shortcuts import render
def index(request):
return HttpResponse("Hello, world!")
これは、HTTP リクエストが来たら、Hello, world! という文字列を返すだけ。
どんな URL にアクセスしたら、この index 関数が実行されるのか?
この後から、URL と関数を紐づけるための設定をおこなっていく。
URL の設定
APP_NAME/ フォルダ配下に urls.py というファイルを作成し、以下のコードを書く。
# APP_NAME/urls.py
from django.urls import path
from . import views
urlpatterns = [
path("", views.index, name="index"),
]
urlpatterns
には、このアプリにアクセスするためのすべての URL が記述される。
path("URLパス", 紐づく関数名, URL パス名)
第一引数のパスを ""
にすると、 APP_NAME/ という URL となる。
第二引数を紐づく関数の名前。 views.
は views.py の中の~という意味。
第三引数はオプションで、この URL を指し示す名前。
※ PROJECT_NAME/PROJECT_NAME/ フォルダ配下には urls.py ファイルが自動生成される。ここのファイルはプロジェクト全体の URL を管理する。複数のアプリはそれぞれ独立しているので、アプリごとに固有の urls.py を作成する。
プロジェクト URL の設定
PROJECT_NAME/PROJECT_NAME/urls.py の urlpatterns
にこのアプリのパスを記述する。
# PROJECT_NAME/PROJECT_NAME/urls.py
urlpatterns = [
path('admin/', admin.site.urls),
path("APP_NAME/", include("APP_NAME.urls")),
]
admin
は最初から記述されている。
path の第一引数にはこのアプリ名(このアプリ全体を指し示す URL )。
第二引数にこのように書くと、このアプリ固有の urls.py に書かれたすべての URL が含まれるようになる(登録される)。要するに、 APP_NAME/ 以降は、このアプリ固有の urls.py ファイルを読みにいくようだ。
URLパターンをインクルードするときはいつでも include() を使うべきです。 admin.site.urls はこれについての唯一の例外です。
https://docs.djangoproject.com/ja/3.0/intro/tutorial01/
画面を表示
Web サーバーを起動して表示を確認してみる。
$ python manage.py runserver
http://localhost:8000/APP_NAME/ または http://127.0.0.1:8000/APP_NAME/ にアクセスすると、 Hello, world! が表示される。