\ お問い合わせはこちら! /

【Django】プロジェクトとアプリの設定方法まとめ

  • Djangoの開発を始めるための準備が知りたい!

普通にPythonでコーディングするのと違って、Djangoの開発では細々した準備が必要です。

内容をざっと列挙すると以下の通り。

  1. Djangoのインストール
  2. プロジェクトの作成
  3. アプリの作成
  4. settings.pyの編集
  5. スーパーユーザーの作成
  6. データベースのマイグレーション
  7. 管理ページの編集

僕は慣れるまでチュートリアルや過去に作成したコードを見直していましたが、ごらんのとおり手順が多いので抜け漏れが出てきてしまいがち。

そこで本記事ではDjangoプロジェクトの準備に必要な操作をまとめました。

1. 初期設定 – インストールとプロジェクトファイル生成

まずはDjangoプロジェクトとアプリを作成する方法から。

こちらの内容をやっていただくことで、プロジェクト・アプリに必要なディレクトリとファイル群が作成されます。

Djangoのインストール

インストールは普通にpip installすればOK。

pip install django

バージョン指定する場合は以下です。

pip install django==4.1.5

バージョン一覧を取得するには、次のコマンドを実行します。

pip install Django==

インストールが成功したかどうかは、以下のコマンドを入力します。
成功していればバージョンが表示されます。

python -m django --version

上記でもOKですが、requirements.txtを用意するのがラクかとは思います。

プロジェクトファイルの作成

一連のプロジェクトファイルを作成するコマンドは以下。

django-admin startproject appconfig .

末尾に.をつけることで、ディレクトリ構成がスッキリする。

アプリファイルの作成

アプリの作成コマンドは以下です。

python manage.py startapp polls

2. 初期設定 – settings.py周り

続いてsettings.py周りの設定方法をやっていきます。

TIME_ZONEとか地味に重要な項目もあるので、もれなく進めていきます。

TIME_ZONEの設定

タイムゾーンを日本に設定する場合は以下です。

LANGUAGE_CODE = 'ja'
TIME_ZONE = 'Asia/Tokyo'

プロジェクトにアプリを認識させる

プロジェクトに追加したアプリを追加するにはINSTALLED_APPSリストにアプリを追加します。

INSTALLED_APPS = [
    'polls.apps.PollsConfig',
]

名前はapp名 > apps.py > AppConfigクラスを示しています。

3. データベースの準備

データベースを取り扱うmodels.py関連の設定です。

基本の書き方

from django.db import models

class Question(models.Model):
    question_text = models.CharField(max_length=200)
    # 便宜上、date publishedと命名
    pub_date = models.DateTimeField('date published')

class Choice(models.Model):
    # Questionモデルと関連付け
    question = models.ForeignKey(Question, on_delete=models.CASCADE)
    choice_text = models.CharField(max_length=200)
    votes = models.IntegerField(default=0)

また、__str__メソッドを追加することで管理ページ上に表示する文字列を決められます。
デフォルトではQuestion object (1)のようになってるので、一体なんのデータなのかが分かりにくい。

from django.db import models

class Question(models.Model):
    question_text = models.CharField(max_length=200)
    # 便宜上、date publishedと命名
    pub_date = models.DateTimeField('date published')
    
    def __str__(self):
        # question_textを表示項目とする
        return self.question_text

フィールドの種類と役割については公式ドキュメントを参照。
» 参考:モデルフィールドリファレンス

データベースのマイグレート

models.pyの作り込みが終わったら、Djangoにデータベースの更新を適用します。

基本はmigrateの後にmakemigrationsをします。

python manage.py migrate
python manage.py makemigrations

管理ページにモデルを表示させる

管理ページにデータベースの内容を表示させるためにはadmin.pyを編集します。

admin.site.registerの引数にモデルのクラス名を渡します。

from django.contrib import admin
from .models import Choice, Question

admin.site.register(Question)
admin.site.register(Choice)

フィールド間を関連づけてやる場合には、以下のようにModelAdminクラスを継承させて以下のようにするとテーブルが一つにまとまって表示されるので良いです。

from django.contrib import admin
from .models import Choice, Question

# admin.StackedInlineだと縦長になる
class ChoiceInline(admin.TabularInline):
    model = Choice
    extra = 3

class QuestionAdmin(admin.ModelAdmin):
    inlines = [ChoiceInline]
    list_display = ('question_text', 'pub_date', 'was_published_recently')

admin.site.register(Question, QuestionAdmin)

4. ローカルサーバーの立ち上げなど

主にmanage.pyを使って実行するコマンドをご紹介します。

ローカルサーバーを立ち上げる

python manage.py runserver

スーパーユーザーを作成

以下のコマンドを入力後にユーザー名とメールアドレス、パスワードの設定を求められます。

python manage.py createsuperuser

メールアドレスは省略可能。

【まとめ】プロジェクト開始方法

慣れてくると見なくてもできるようになってきますが、最初の頃は何をやっているか理解できていないこともあり必要以上に複雑に捉えてしまいがちです。

以上、Djangoプロジェクト作成の流れでした。

この記事が気に入ったら
フォローしてね!

シェア・記事の保存はこちら!

この記事を書いた人

karo@プログラマのアバター karo@プログラマ プログラマ

「書くことで人の役にたつ」をモットーに活動中。
本職はプログラマで、Python(Django)が得意。最近ではフロント側の技術に触れる機会も増えてきました。
基本情報技術者試験合格。

コメント

コメントする

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)