コンテンツへスキップ

apps, models, migration

djangoプロジェクトの中には複数のappsを作成することができ、1つのappには基本的に1つの機能を持たせます。appは他のプロジェクトに容易に移送することができます。

app内のmodels.pyにはデータベースへ登録するデータ構造を定義します。

新しいappの設定が終わったら、migrationをすることによって変更が適応されます。

設定方法

  1. djangoプロジェクトのディレクトリで以下のコマンドを実行することによって新しいappを作成します。appのフォルダが作成されます。
python manage.py startapp app名
  1. appのフォルダ内のmodels.pyをエディタで開き、データ構造をclassで定義します。利用可能な項目の全容は公式ドキュメントに記載されています。
from django.db import models

class Job(models.Model):
    image = models.ImageField(upload_to='images/')
    summary = models.CharField(max_length=200)

画像項目を作成した場合は、画像がアップロードされるディレクトリをsettings.pyに設定します。settings.pyをエディタで開き、MEDIA_ROOTMEDIA_URLを指定します。

STATIC_URL = '/static/'
MEDIA_ROOT = BASE_DIR / 'media'
MEDIA_URL = '/media/'

アップロードした画像をURLでアクセスできるようにするため、urls.pyにも+ static()を加えます。
各アプリのurls.pyまたはviews.pyを参照する場合は以下のようにします。

from django.conf import settings
from django.conf.urls.static import static

urlpatterns = [
    path('', views.count, name='count_url'),
    path('count/', count.views.home, name='home'), #アプリのviews.pyを参照
    path('blog/', include('count.urls')), #アプリのurls.py経由でviews.pyを参照
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
  1. settings.pyをエディタで開き、INSTALLED_APPSに新たに作成したappを追加します。
INSTALLED_APPS = [
    'app名.apps.JobsConfig',
    ...
]
  1. migrationをしてappの変更点を適応します。
python manage.py makemigrations
python manage.py migrate