tachitomonn’s blog

IT技術関連の学習メモがメインでたまに趣味のこととか

Python Django Tutorial 学習メモ その1

インストール

python バージョンは 3.7.2
インストールは venv の仮想環境で pip で入れました。

>pip install Django

確認してみる。

>>> import django
>>> print(django.get_version())
3.2.6

プロジェクト作成

プロジェクトを置きたいディレクトリにて

>django-admin startproject study_django

study_djangoディレクトリができる。中身は

>dir .\study_django

manage.py ファイルと study_django ディレクト

>dir .\study_django\study_django

以下のファイルが含まれる。

  • asgi.py
  • settings.py
  • urls.py
  • wsgi.py
  • __init__.py

開発用サーバの起動

>cd .\study_django
>python manage.py runserver

ブラウザで http://127.0.0.1:8000/ にアクセスする。

アプリケーションを作る

プロジェクトは、特定のウェブサイトの構成とアプリのコレクションであり、
プロジェクトには複数のアプリを含めることができる。
アプリは複数のプロジェクトに存在できる。

>python manage.py startapp myapp00

myapp00ディレクトリができる。

>dir .\myapp00
  • admin.py
  • apps.py
  • migrations
  • models.py
  • tests.py
  • views.py
  • __init__.py

ビューを書く

\myapp00\views.py にお馴染み Hello, world を書く

from django.http import HttpResponse

def index(request):
    return HttpResponse("Hello, world.")

ビューと URL を紐づける
\myapp00\urls.py

from django.urls import path

from . import views

urlpatterns = [
    path('', views.index, name='index'),
]

ルートの URLconf に myapp00.urls モジュールの記述を反映させる。
study_django/urls.py に django.urls.include の import を追加して、 urlpatterns のリストに include() を挿入する。
\study_django\urls.py

from django.contrib import admin
from django.urls import path, include

urlpatterns = [
    path('myapp00/', include('myapp00.urls')),
    path('admin/', admin.site.urls),
]

include() 関数は他の URLconf への参照をすることができる。
動作確認してみる。

>python manage.py runserver

http://localhost:8000/myapp00/ へアクセスして Hello, world. が表示された。
path() 関数は4つの引数を受け取る。
引数のうち route と view の2つは必須で、kwargs、name の2つは省略可能。
path() 引数: route
route は URL パターンを含む文字列。
リクエストを処理するとき、Django は urlpatterns のはじめのパターンから開始し、リストを順に下に見ていく。
path() 引数: view
Django がマッチする正規表現を見つけると、 Django は指定されたビュー関数を呼び出す。
その際は HttpRequest オブジェクトを第一引数に、そしてキーワード引数として route から「キャプチャされた」値を呼びだす。
path() 引数: kwargs
任意のキーワード引数を辞書として対象のビューに渡すことができる。
path() 引数: name
URL に名前付けをしておけば Django のどこからでも明確に参照でき、とくにテンプレートの中で有効となる。