導入
前のレッスンで出てきた「決まり文句」の中身を見ておきましょう。ここを理解しておくと、この先すべてのレッスンのコードが読めるようになります。
説明
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つです。
- 設定(settings) …
DEBUGやSECRET_KEYなど、アプリ全体のふるまいを決める。ROOT_URLCONF=__name__は「URL 表はこのファイルのurlpatternsを見てね」という指定です。 - URL 表(urlpatterns) …
path("パス", ビュー)を並べる。パスは先頭の/を書かず、末尾に/を付けるのが Django の慣習です。 - ビュー … 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を見る
urlpatterns に path("help/", help_view) を追加します。パスの先頭に / は付けません。