本文へスキップ
BecomeCoder

Djangoコース · 第1章 はじめてのDjango · レッスン3

1ファイルDjangoの読み方 ― 設定・URL・ビュー

ブラウザで完結

導入

前のレッスンで出てきた「決まり文句」の中身を見ておきましょう。ここを理解しておくと、この先すべてのレッスンのコードが読めるようになります。

説明

Django は動く前に「どんな設定で動くか」を教えてもらう必要があります。ふつうのプロジェクトでは settings.py というファイルに書きますが、このコースでは学習のために settings.configure(...) で1ファイルにまとめています。

import django
from django.conf import settings
if not settings.configured:
    settings.configure(
        DEBUG=True,                    # 開発モード(エラー詳細を出す)
        SECRET_KEY="dev",              # 暗号化に使う鍵(本番は秘密の長い文字列)
        ROOT_URLCONF=__name__,         # URL表がどこにあるか(=このファイル)
        ALLOWED_HOSTS=["testserver"],  # アクセスを許可するホスト名
    )
    django.setup()                     # 設定を確定して Django を起動

from django.http import HttpResponse
from django.urls import path

def top(request):
    return HttpResponse("トップページ")

def about(request):
    return HttpResponse("このサイトについて")

urlpatterns = [
    path("", top),          # /        -> top
    path("about/", about),  # /about/  -> about
]

from django.test import Client
client = Client()
print(client.get("/").content.decode())       # トップページ
print(client.get("/about/").content.decode())  # このサイトについて

ポイントは3つです。

  1. 設定(settings)DEBUGSECRET_KEY など、アプリ全体のふるまいを決める。ROOT_URLCONF=__name__ は「URL 表はこのファイルの urlpatterns を見てね」という指定です。
  2. URL 表(urlpatterns)path("パス", ビュー) を並べる。パスは先頭の / を書かず、末尾に / を付けるのが Django の慣習です。
  3. ビュー … URL ごとに呼ばれる関数

if not settings.configured: で囲っているのは、「▶ 実行」を何度押しても設定が一度で済むようにするためのおまじないです。これ以降のレッスンも、この形の設定+URL+ビューで組み立てていきます。

やってみよう

urlpatterns に3つめの URL を足してみましょう。たとえば新しいビュー def contact(request): return HttpResponse("お問い合わせ") を作り、path("contact/", contact) を追加して、client.get("/contact/") の中身を print してみてください。

演習

about ビューが /about/このサイトについて を返しています。これに加えて、/help/ にアクセスすると ヘルプ と返す help_view を作り、URL 表に登録してください。最後に print(client.get("/help/").content.decode()) で確認します。

ヒント1を見る

def help_view(request): return HttpResponse("ヘルプ") を作ります。

ヒント2を見る

urlpatternspath("help/", help_view) を追加します。パスの先頭に / は付けません。

実際に動かしてみよう

本文のサンプルや演習のコードは、コードブロック右上の「コピー」ボタンでコピーして、下のエディタに貼り付ければそのまま実行できます。

Python — ライブラリ付きで実行(Pyodide)

numpy / pandas / matplotlib が使える本物のPython(Pyodide)を読み込みます。初回のみ読み込みに少し時間がかかります(以降はブラウザにキャッシュされます)。
スクロールして表示された時点でも自動で読み込まれます。