---
title: "はじめての Django アプリ作成、その 1"
version: 5.2
locale: ja
source: https://docs.djangoproject.com/ja/5.2/intro/tutorial01/
canonical: https://djangodocs.dev/ja/5.2/intro/tutorial01/
---
# はじめての Django アプリ作成、その 1

さあ、例を交えながら学んでゆきましょう。

このチュートリアルでは、簡単な投票 (poll) アプリケーションの作成に取り組ん でもらいます。

Poll アプリケーションは 2 つの部分からなります:

- ユーザが投票したり結果を表示したりできる公開用サイト
- 投票項目の追加、変更、削除を行うための管理 (admin) サイト

[Django は既にインストール済み](/ja/5.2/intro/install/) として説明を進めます。Django がインストールされているかどうか、またどのバージョンがインストールされているかを調べるには、以下のコマンドをシェルプロンプト（先頭の $ は入力待ちを示す記号です）で実行します。

```console
$ python -m django --version
```

*Windows*

```doscon
...\> py -m django --version
```

Django がインストールされていれば、インストールされている Django のバージョンがわかります。もしなければ "No module named django" とエラーが表示されます。

このチュートリアルは Python 3.10 以降をサポートする Django 5.2 用に書かれています。もし Django のバージョンが一致しない場合は、このページの右下にあるバージョンスイッチャーを使って、あなたの Django のバージョンのチュートリアルを参照するか、Django を最新バージョンにアップデートしてください。古いバージョンの Python を使っている場合は、 [どのバージョンの Python で Django が使えますか?](/ja/5.2/faq/install/#faq-python-version-support) をチェックして、互換性のあるバージョンの Django を見つけてください。

> **困ったときは:**
>
> このチュートリアルの実行に問題がある場合は、FAQ の [Getting Help](/ja/5.2/faq/help/) セクションに進んでください。

## プロジェクトを作成する

初めて Django を使うのなら、最初のセットアップを行う必要があります。通常は、 Django のプロジェクト ([project](/ja/5.2/glossary/#term-project)) を構成するコードを自動生成します。プロジェクトとは、データベースの設定や Django 固有のオプション、アプリケーション固有の設定などといった、個々の Django インスタンスの設定を集めたものです。

コマンドラインから、コードを保存したいディレクトリに移動し、`djangotutorial` という名前の新しいディレクトリを作成します。（このディレクトリ名はDjangoには関係なく、任意の名前に変更できます。）

```console
$ mkdir djangotutorial
```

*Windows*

```doscon
...\> mkdir djangotutorial
```

次に、以下のコマンドを実行して新しいDjangoプロジェクトを立ち上げます。

```console
$ django-admin startproject mysite djangotutorial
```

*Windows*

```doscon
...\> django-admin startproject mysite djangotutorial
```

これにより、`djangotutorial` ディレクトリ内に `mysite` という名前のプロジェクトが作成されます。もしうまくいかなかった場合は、 [django-admin 実行時の問題](/ja/5.2/faq/troubleshooting/#troubleshooting-django-admin) を参照してください。

> **Note**
>
> プロジェクトの名前を付けるとき、組み込みの Python モジュールや Django のコンポーネントの名前を使わないようにしてください。とりわけ、 `django` (Django 自体と名前が衝突します) や `test` (組み込みの Python パッケージ名と名前が衝突します) を使わないようにしましょう。

[`startproject`](/ja/5.2/ref/django-admin/#django-admin-startproject) が何を作成したかをみてみましょう:

```text
djangotutorial/
    manage.py
    mysite/
        __init__.py
        settings.py
        urls.py
        asgi.py
        wsgi.py
```

ファイルはそれぞれ以下のような役割を持っています:

- `manage.py`: Django プロジェクトに対する様々な操作を行うためのコマンドラインユーティリティです｡詳しくは [django-admin と manage.py](/ja/5.2/ref/django-admin/) 内の `manage.py` を参照してください｡
- `mysite/`: これは実際のプロジェクト用のPythonパッケージを含むディレクトリです。このディレクトリの名前は、内部のモジュールやパッケージをインポートするために使用するPythonパッケージ名になります（例: `mysite.urls`）。
- `mysite/__init__.py`: このディレクトリが Python パッケージであることを Python に知らせるための空のファイルです。Python の初心者は、 Python の公式ドキュメントの [more about packages](https://docs.python.org/3/tutorial/modules.html#tut-packages) を読んで下さい。
- `mysite/settings.py`: Django プロジェクトの設定ファイルです。 設定の仕組みは [Djangoの設定](/ja/5.2/topics/settings/) を参照してください。
- `mysite/urls.py`: Django プロジェクトの URL 宣言、いうなれば Django サイトにおける「目次」に相当します。詳しくは [URL ディスパッチャ](/ja/5.2/topics/http/urls/) を参照 してください。
- `mysite/asgi.py`: プロジェクトをサーブするためのASGI互換Webサーバーとのエントリーポイントです。詳細については [ASGI とともにデプロイするには](/ja/5.2/howto/deployment/asgi/) を参照してください。
- `mysite/wsgi.py`: プロジェクトをサーブするためのWSGI互換Webサーバーとのエントリーポイントです。詳細は [WSGI とともにデプロイするには](/ja/5.2/howto/deployment/wsgi/) を参照してください。

## 開発用サーバー

Djangoプロジェクトが正常に動作するか確認しましょう。まだであれば、`djangotutorial` ディレクトリに移動し、以下のコマンドを実行してください。

```console
$ python manage.py runserver
```

*Windows*

```doscon
...\> py manage.py runserver
```

コマンドライン上で下記の出力が確認できるでしょう:

```
Performing system checks...

System check identified no issues (0 silenced).

You have unapplied migrations; your app may not work properly until they are applied.
Run 'python manage.py migrate' to apply them.

2026年08月09日 - 15:50:53
Django version 5.2, using settings 'mysite.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.

WARNING: This is a development server. Do not use it in a production setting. Use a production WSGI or ASGI server instead.
For more information on production servers see: https://docs.djangoproject.com/en/5.2/howto/deployment/
```

> **Note**
>
> 適用されていないデータベースマイグレーションについての警告はここでは無視します、後ほどすぐにデータベースとともにたっぷりと取り組みます。

さあ、これでサーバが起動したので、ブラウザで <http://127.0.0.1:8000/> にアクセスしてみてください。 "Congratulations!" と表示された、ロケットが離陸しているページが出るはずです。やりましたね！

これで、 Django 開発サーバを起動しました。 Django 開発サーバは Python だけで書かれた軽量な Web サーバです。このサーバは、開発を迅速に行い、運用に適した状態になるまで Apache のような運用サーバの設定をいじらなくても良いようにするためのものです。

ここでちょっと注意しておきましょう。このサーバは開発中の利用だけを考えて作られています。絶対に運用環境では **使わないでください** (筆者たちの専門は Web フレームワークであって、Web サーバではありません)。

（サイトを別のポートで提供するには、[`runserver`](/ja/5.2/ref/django-admin/#django-admin-runserver) のリファレンスを参照してください。）

> **runserver の自動リロード**
>
> 開発サーバーは必要に応じてリクエストごとにPythonコードを自動的にリロードします。コード変更の効果を得るためにサーバーを再起動する必要はありません。しかしながら、ファイルの追加のようないくつかの行動は再起動をトリガーしません、このような場合はサーバーを再起動する必要があります。

## Polls アプリケーションをつくる

さあ、これで自分用の環境、すなわちプロジェクトが立ち上がり、作業にとりかかる準備ができました。

Django 内に追加する各アプリケーションは、所定の規約に従った Python パッケージで構成されます。 Django には基本的なディレクトリ構造を自動生成するユーティリティが含まれているので、ディレクトリを作ることではなくコードを書くことに集中できます。

> **プロジェクトとアプリケーション**
>
> プロジェクトとアプリの違いは何でしょうか？ アプリとは、ブログシステム、公的記録のデータベース、小規模な投票アプリなど、何かを行う Web アプリケーションです。プロジェクトは、特定のウェブサイトの構成とアプリのコレクションです。プロジェクトには複数のアプリを含めることができます。 アプリは複数のプロジェクトに存在できます。

アプリはあなたの [Python パス](https://docs.python.org/3/tutorial/modules.html#tut-searchpath) のどこにでも配置できます。このチュートリアルでは、`djangotutorial` フォルダー内に投票アプリを作成します。

アプリケーションを作るには、 `manage.py` と同じディレクトリに入って、このコマンドを実行します:

```console
$ python manage.py startapp polls
```

*Windows*

```doscon
...\> py manage.py startapp polls
```

このコマンドは `polls` というディレクトリを作成します。中身はこのようになっています:

```text
polls/
    __init__.py
    admin.py
    apps.py
    migrations/
        __init__.py
    models.py
    tests.py
    views.py
```

このディレクトリ構造が、 poll アプリケーションの全体像です。

## はじめてのビュー作成

最初のビューを書いてみましょう。 `polls/views.py` を開いて、以下の Python コードを書いてください:

*`polls/views.py`*

```python
from django.http import HttpResponse

def index(request):
    return HttpResponse("Hello, world. You're at the polls index.")
```

これはDjangoにおける最も基本的なビューです。これにブラウザからアクセスするためには、URLにマッピングする必要があります。そのためには、URL設定、略して「URLconf」を定義する必要があります。このURL設定は、各Djangoアプリ内で定義されており、`urls.py` という名前のPythonファイルです。

`polls` アプリのURLconfを定義するには、以下の内容で `polls/urls.py` というファイルを作成します。

*`polls/urls.py`*

```python
from django.urls import path

from . import views

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

あなたのアプリディレクトリは、次のようになっているはずです。

```text
polls/
    __init__.py
    admin.py
    apps.py
    migrations/
        __init__.py
    models.py
    tests.py
    urls.py
    views.py
```

次のステップは、`mysite` プロジェクトのルートのURLconfに、`polls.urls` で定義されたURLconfを含めることです。そのためには、`mysite/urls.py` で `django.urls.include` をインポートし、`urlpatterns` リストに [`include()`](/ja/5.2/ref/urls/#django.urls.include) を追加します。つまり、次のようにします。

*`mysite/urls.py`*

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

urlpatterns = [
    path("polls/", include("polls.urls")),
    path("admin/", admin.site.urls),
]
```

[`path()`](/ja/5.2/ref/urls/#django.urls.path) 関数には少なくとも2つの引数、`route` と `view` が必要です。[`include()`](/ja/5.2/ref/urls/#django.urls.include) 関数は、他のURLconfを参照するのに使います。Djangoが [`include()`](/ja/5.2/ref/urls/#django.urls.include) を見つけると、これまでに一致したURLの部分を切り捨て、残りの文字列をインクルードされたURLconfに渡して、さらに処理を続けます。

[`include()`](/ja/5.2/ref/urls/#django.urls.include) の背景にある考えは、 URL を簡単にプラグ & プレイ可能にすることです。 polls には独自の URLconf (`polls/urls.py`) を持っているので、 "/polls/" 、 "/fun\_polls/" や、 "/content/polls/" といった、どんなパスルート下にも置けて、どこに置いてもきちんと動作します。

> **include() を使うとき**
>
> 他のURLパターンを含める際には、常に `include()` を使用するべきです。ただし、例外として `admin.site.urls` があります。これは、Djangoが提供するデフォルトの管理サイト用に事前に作成されたURLconfです。

これで `index` ビューを URLconf に紐付けることができました。下記のコマンドを実行して、動作を確認してください:

```console
$ python manage.py runserver
```

*Windows*

```doscon
...\> py manage.py runserver
```

ブラウザで <http://localhost:8000/polls/> にアクセスすると、 "*Hello, world. You're at the polls index.*" と表示されるのが確認できるでしょう。これはビューの `index` で定義したものです。

> **ページが見つかりませんか？**
>
> ここでエラーページが表示されたら、 <http://localhost:8000/> ではなく、 <http://localhost:8000/polls/> にアクセスしていることを確認してください。

基本的なリクエストとレスポンスのフローに馴染んだら、データベースを使った作業を始めるために [チュートリアルその2](/ja/5.2/intro/tutorial02/) を読みましょう。
