Djangoには projectapp の2つの概念があります。今回はappの作成について書いていきたいと思います。

環境

  • Django: 3.0
  • Python: 3.6

app

appとは application の略です。

projectはappから構成されています。もちろんappのないDjangoプロジェクトも存在しますが、Djangoで開発する強みというのはこのappを複数持てるところにあるので大体のDjangoプロジェクトにはappが採用されています。

ディレクトリ構成

プロジェクト名は aegis(イージス)です。

├── Dockerfile ├── README.md ├── aegis │   ├── __init__.py │   ├── __pycache__ │   │   ├── __init__.cpython-36.pyc │   │   ├── __init__.cpython-39.pyc │   │   ├── settings.cpython-36.pyc │   │   ├── settings.cpython-39.pyc │   │   ├── urls.cpython-36.pyc │   │   ├── urls.cpython-39.pyc │   │   ├── wsgi.cpython-36.pyc │   │   └── wsgi.cpython-39.pyc │   ├── asgi.py │   ├── settings.py │   ├── urls.py │   └── wsgi.py ├── db.sqlite3 ├── docker-compose.yml ├── manage.py └── requirements.txt
Code language: CSS (css)

app作成

では、appを作成してみましょう。

$ python manage.py startapp app # appには任意のappの名前を入れてください
Code language: PHP (php)

これで app ディレクトリが作成されます。

├── Dockerfile ├── README.md ├── aegis │   ├── __init__.py │   ├── __pycache__ │   │   ├── __init__.cpython-36.pyc │   │   ├── __init__.cpython-39.pyc │   │   ├── settings.cpython-36.pyc │   │   ├── settings.cpython-39.pyc │   │   ├── urls.cpython-36.pyc │   │   ├── urls.cpython-39.pyc │   │   ├── wsgi.cpython-36.pyc │   │   └── wsgi.cpython-39.pyc │   ├── asgi.py │   ├── settings.py │   ├── urls.py │   └── wsgi.py ├── app │   ├── __init__.py │   ├── admin.py │   ├── apps.py │   ├── migrations │   │   └── __init__.py │   ├── models.py │   ├── tests.py │   └── views.py ├── db.sqlite3 ├── docker-compose.yml ├── manage.py └── requirements.txt
Code language: CSS (css)

appのページを表示

ではapp配下にviewとテンプレートを作って画面表示してみましょう。

settings.py

新しくappを作成したのでsettings.pyの INSTALLED_APPS に追加します

diff --git a/aegis/settings.py b/aegis/settings.py index 4a796a9..607ac11 100644 --- a/aegis/settings.py +++ b/aegis/settings.py @@ -37,6 +37,7 @@ INSTALLED_APPS = [ 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', + 'app' ]
Code language: JavaScript (javascript)

Viewファイル

app配下のviewを管理するディレクトリviewsを作成し、その配下にviewファイルを格納します。今回は app/views/sample.pyをサンプルとして作成します。

from django.shortcuts import render from django.views.generic.base import TemplateView # Create your views here. class SampleIndexView(TemplateView): template_name = 'sample/index.html' def get(self, request, **kwargs): context = {} return self.render_to_response(context)

initファイル

上で作成したviewファイルを読み込むために、init設定を行います。 app/views/__init__.pyを作成します。

from app.views.sample import *
Code language: JavaScript (javascript)

Templateファイル

app/templates/sample/index.htmlファイルを作成します。

This is sample/index.html

app/urls.py

新規で app/urls.py を作成しRoutingの設定を行います。

# -*- coding: utf-8 -*- from django.conf.urls import url from app.views import * from django.views.generic import TemplateView urlpatterns = [ url('', SampleIndexView.as_view(), name='index'), ]
Code language: PHP (php)

既存の aegis/urls.py の修正

上で作成した app/urls.py をインクルードするように修正します。

diff --git a/aegis/urls.py b/aegis/urls.py index 3dbfc28..064fdbb 100644 --- a/aegis/urls.py +++ b/aegis/urls.py @@ -15,7 +15,8 @@ Including another URLconf """ from django.contrib import admin from django.urls import path +from django.urls import path, include urlpatterns = [ - path('admin/', admin.site.urls), + path('', include('app.urls')), ]
Code language: PHP (php)

ブラウザ表示

では localhost:8000をブラウザで叩いてみましょう。下記のような画面になれば成功です。

以上、Djangoでのapp作成〜画面表示までの手順でした。

最後までお読みいただきありがとうございました。

By user