djangoプロジェクトの中には複数のappsを作成することができ、1つのappには基本的に1つの機能を持たせます。appは他のプロジェクトに容易に移送することができます。
app内のmodels.py
にはデータベースへ登録するデータ構造を定義します。
新しいappの設定が終わったら、migrationをすることによって変更が適応されます。
設定方法
- djangoプロジェクトのディレクトリで以下のコマンドを実行することによって新しいappを作成します。appのフォルダが作成されます。
python manage.py startapp app名
- 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_ROOT
とMEDIA_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)
settings.py
をエディタで開き、INSTALLED_APPS
に新たに作成したappを追加します。
INSTALLED_APPS = [
'app名.apps.JobsConfig',
...
]
- migrationをしてappの変更点を適応します。
python manage.py makemigrations
python manage.py migrate