Django 最初のプロジェクトを作成

この章では、Django 管理ツールと、Django を使用してプロジェクトを作成する方法を紹介します。最初のプロジェクトは HelloWorld と名付けます。

テストバージョンの説明:

  • Python 3.9.7

  • Django 4.2.7

以下のコマンドでバージョン番号を確認できます:

# python3 -V
Python 3.9.7
# python3 -m django --version
4.2.7

Django 管理ツール

Django をインストールした後、利用可能な管理ツールがすでにあるはずですdjango-admin、Windowsで環境変数を設定していない場合は、次を使用できますdjango-admin。

django-admin のコマンド紹介を見てみましょう:

$ django-admin

Type 'django-admin help <subcommand>' for help on a specific subcommand.

Available subcommands:

[django]
    check
    compilemessages
    createcachetable
    dbshell
    diffsettings
    dumpdata
    flush
    inspectdb
    loaddata
    makemessages
    makemigrations
    migrate
    runserver
    sendtestemail
    shell
    showmigrations
    sqlflush
    sqlmigrate
    sqlsequencereset
    squashmigrations
    startapp
    startproject
    test
    testserver
……省略部分……

最初のプロジェクトを作成

django-admin を使用して HelloWorld プロジェクトを作成します:

django-admin startproject HelloWorld

作成が完了したら、プロジェクトのディレクトリ構造を確認できます:

$ cd HelloWorld/
$ tree
HelloWorld/                  # 项目根目录
├── manage.py                # 项目管理脚本
├── db.sqlite3               # SQLite 数据库文件
├── __pycache__/             # Python 字节码缓存
└── HelloWorld/              # 项目配置目录(与项目同名)
    ├── __init__.py          # 包标识文件
    ├── settings.py          # 项目设置
    ├── urls.py             # 主路由配置
    ├── asgi.py             # ASGI 配置
    └── wsgi.py             # WSGI 配置

プロジェクトルートディレクトリ (HelloWorld/):

ファイル/ディレクトリ役割
manage.pyDjango コマンドラインツールのエントリポイントであり、開発サーバーの起動やデータベースの移行などの操作に使用します。
db.sqlite3SQLite データベースファイル(デフォルトデータベース、開発環境で使用)。
__pycache__/Python バイトコードキャッシュディレクトリ(自動生成され、手動で変更する必要はありません)。

メインプロジェクト設定ディレクトリ (HelloWorld/HelloWorld/):

ファイル/ディレクトリ役割
__init__.py空のファイルで、Python にこのディレクトリがパッケージであることを伝えます。
settings.pyコア設定ファイル、以下を含みます:
- データベース設定 (DATABASES)
- 静的ファイルパス (STATIC_URL)
- アプリケーション登録 (INSTALLED_APPS)
- デバッグモード (DEBUG=True/False)
urls.pyメインルーティング設定ファイル、URLパスとビューのマッピング関係を定義します。
asgi.pyASGI サーバー設定(Daphne などの非同期 Web サーバー用)。
wsgi.pyWSGI サーバー設定(Gunicorn、uWSGI などの従来の Web サーバー用)。

次に、HelloWorld ディレクトリに入り、以下のコマンドを入力してサーバーを起動します:

python3 manage.py runserver 0.0.0.0:8000

0.0.0.0 は他のコンピューターが開発サーバーに接続できるようにします。8000 はポート番号です。指定しない場合、ポート番号はデフォルトで 8000 になります。

ブラウザにサーバーの IP を入力します(ここではローカル IP アドレスを入力します:127.0.0.1:8000)とポート番号を入力します。正常に起動した場合、出力結果は次のようになります:

重要なファイルの詳細

1. settings.py(コア設定)

例

# HelloWorld/settings.py サンプル(一部抜粋)

# セキュリティ警告:本番環境では DEBUG をオフにする必要があります!
DEBUG = True

# アクセスを許可するドメイン名(DEBUG=False の場合は設定が必要)
ALLOWED_HOSTS = []

# 登録された Django アプリ
INSTALLED_APPS = [
    'django.contrib.admin',  # 管理バックエンド
    'django.contrib.auth',   # 認証システム
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',  # 静的ファイル処理
]

# データベース設定(デフォルトは SQLite)
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': BASE_DIR / 'db.sqlite3',  # データベースファイルのパス
    }
}

# 静的ファイル URL(CSS/JS/画像)
STATIC_URL = 'static/'

2. urls.py(ルーティング設定)

例

# HelloWorld/urls.py サンプル

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

urlpatterns = [
    path('admin/', admin.site.urls),  # バックエンド管理ルート
    # ここにカスタムルートを追加できます。例:
    # path('blog/', include('blog.urls')),
]

3. manage.py(プロジェクト管理スクリプト)

例

#!/usr/bin/env python
import os
import sys

if __name__ == "__main__":
    os.environ.setdefault("DJANGO_SETTINGS_MODULE", "HelloWorld.settings")
    from django.core.management import execute_from_command_line
    execute_from_command_line(sys.argv)

ビューとURL設定

先ほど作成した HelloWorld ディレクトリ内の HelloWorld ディレクトリに views.py ファイルを新規作成し、コードを入力します:

HelloWorld/HelloWorld/views.py ファイルコード:

from django.http import HttpResponse def hello(request): return HttpResponse("Hello world ! ")

次に、URL とビュー関数をバインドします。urls.py ファイルを開き、元のコードを削除して、以下のコードを urls.py ファイルにコピー&ペーストします:

HelloWorld/HelloWorld/urls.py ファイルコード:

from django.urls import path from . import views urlpatterns = [ path("", views.hello, name="hello"), ]

ディレクトリ構造全体は次のようになります:

$ tree
.
|-- HelloWorld
|   |-- __init__.py
|   |-- __init__.pyc
|   |-- settings.py
|   |-- settings.pyc
|   |-- urls.py              # url 配置
|   |-- urls.pyc
|   |-- views.py              # 添加的视图文件
|   |-- views.pyc             # 编译后的视图文件
|   |-- wsgi.py
|   `-- wsgi.pyc
`-- manage.py

完了したら、Django 開発サーバーを起動し、ブラウザでアクセスします:

以下のルールを変更することもできます:

HelloWorld/HelloWorld/urls.py ファイルコード:

from django.urls import path from . import views urlpatterns = [ path('hello/', views.hello), ]

ブラウザで開きますhttp://127.0.0.1:8000/hello、出力結果は次のようになります:

注意:プロジェクト内でコードに変更があった場合、サーバーは自動的にコードの変更を監視して自動的に再読み込みするため、すでにサーバーを起動している場合は手動で再起動する必要はありません。


path() 関数

Django の path() は 4 つのパラメータを受け取ることができます。2 つの必須パラメータ(route、view)と 2 つのオプションパラメータ(kwargs、name)です。

構文形式:
path(route, view, kwargs=None, name=None)
  • route:文字列で、URL のパス部分を定義します。変数を含めることができます。例:<int:my_variable>、URL からパラメータをキャプチャしてビュー関数に渡すことができます。

  • view:ビュー関数で、指定されたルートに一致するリクエストを処理します。関数またはクラスベースビューを使用できます。

  • kwargs(オプション):ビュー関数に渡す追加のキーワード引数を含む辞書です。

  • name(オプション):URL ルートに一意の名前を指定して、コードの他の場所で参照できるようにします。これは、テンプレートで URL を生成したり、コード内でリダイレクトなどの操作を行う場合に非常に便利です。

Django 2.0 では re_path() メソッドを使用して 1.x バージョンのurl()メソッドと互換性を持たせることができます。一部の正規表現ルールも re_path() を使用して実装できます。

from django.urls import include, re_path

urlpatterns = [
    re_path(r'^index/$', views.index, name='index'),
    re_path(r'^bio/(?P<username>\w+)/$', views.bio, name='bio'),
    re_path(r'^weblog/', include('blog.urls')),
    ...
]
その他の拡張