- Djangoの開発を始めるための準備が知りたい!
普通にPythonでコーディングするのと違って、Djangoの開発では細々した準備が必要です。
内容をざっと列挙すると以下の通り。
- Djangoのインストール
- プロジェクトの作成
- アプリの作成
- settings.pyの編集
- スーパーユーザーの作成
- データベースのマイグレーション
- 管理ページの編集
僕は慣れるまでチュートリアルや過去に作成したコードを見直していましたが、ごらんのとおり手順が多いので抜け漏れが出てきてしまいがち。
そこで本記事ではDjangoプロジェクトの準備に必要な操作をまとめました。
1. 初期設定 – インストールとプロジェクトファイル生成
まずはDjangoプロジェクトとアプリを作成する方法から。
こちらの内容をやっていただくことで、プロジェクト・アプリに必要なディレクトリとファイル群が作成されます。
Djangoのインストール
インストールは普通にpip install
すればOK。
pip install django
バージョン指定する場合は以下です。
pip install django==4.1.5
バージョン一覧を取得するには、次のコマンドを実行します。
pip install Django==
インストールが成功したかどうかは、以下のコマンドを入力します。
成功していればバージョンが表示されます。
python -m django --version
プロジェクトファイルの作成
一連のプロジェクトファイルを作成するコマンドは以下。
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',
]
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プロジェクト作成の流れでした。
コメント