Django の使い方 -Webアプリをつくる-

Python3Django

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! が表示される。

Posted by Agopeanuts