■ はじめに
https://dk521123.hatenablog.com/entry/2022/08/07/121017
https://dk521123.hatenablog.com/entry/2022/08/08/140619
の続き。 今回は、 Django (ジャンゴ) の「アプリ」について学ぶ。 これで、 Django (ジャンゴ) に関する仕組みの知識ベースは ある程度できたかなっと。
目次
【1】アプリ 1)プロジェクトとアプリとの関係 【2】アプリ作成する方法 【3】サンプル
【1】アプリ
* Webサービスにおいて、必要な機能単位
https://docs.djangoproject.com/ja/4.1/intro/tutorial01/
1)プロジェクトとアプリとの関係
a) プロジェクト
* システム全体 (アプリも含む)
b) アプリ
* システムの一機能(サブプロジェクト的な) => Django は、大規模システム向きと学んだが、 アプリごとに開発を分けられる意味でも 確かに向いてそうだと思った
【2】アプリ作成する方法
# プロジェクト「helloworld」に入る cd helloworld # python manage.py startapp <Application Name> python manage.py startapp helloworldapp
出力結果(フォルダ構成)
helloworld + helloworld <= 元々あったプロジェクトフォルダ + helloworldapp <= コマンド実行により作成されたフォルダ + admin.py ... 管理画面で使われるファイル + apps.py ... アプリ名の設定などで使われるファイル + models.py ... モデル(データ)を扱う際のファイル + tests.py ... 単体試験用ファイル + views.py ... ビュークラスのファイル + migrations <= フォルダ etc...
【3】サンプル
* 「【2】アプリ作成する方法」で作成したアプリ「helloworldapp」を ブラウザ表示してみる
helloworld/settings.py
# 一部抜粋 # helloworldapp/apps.py 内のクラス「HelloworldappConfig」を追加 INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'helloworldapp.apps.HelloworldappConfig', # ADD ]
helloworldapp/views.py
from django.shortcuts import render from django.http import HttpResponse def helloworldappview(request): response_object = HttpResponse('Hello World!!????') return response_object
helloworldapp/urls.py
from django.urls import path from .views import helloworldappview urlpatterns = [ path('helloworldapp/', helloworldappview), ]
helloworld/urls.py
from django.contrib import admin from django.urls import path, include # ADD include urlpatterns = [ path('admin/', admin.site.urls), path('', include('helloworldapp.urls')), # ADD ]
動作確認
~~~~ python ./helloworld/manage.py runserver ~~~~ などで、サーバを起動した状態で ブラウザで以下のURLにアクセスする => 「Hello World!!????」が表示されるはず
http://127.0.0.1:8000/helloworldapp/
関連記事
Django ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2022/08/07/121017
Django ~ 基本編 / Class-based View ~
https://dk521123.hatenablog.com/entry/2022/08/08/140619
Django ~ 基本編 / model ~
https://dk521123.hatenablog.com/entry/2022/08/17/231732