1-3. アプリケーションの作成

今回のテーマは「アプリケーションの作成」です。Djangoではプロジェクトの中にアプリケーションという単位のユニットを組み合わせて1つのWEBアプリケーションを作り上げていきます。アプリケーションの作成は何度も行う作業ですので慣れてしまいましょう。

※本ページはデータベースへの接続準備まで読まれた方を対象としています。そのためサンプルソースコードが省略されている場合があります。


Djangoにおけるアプリケーション

設計に正解はありませんが、Djangoは独立性のある小さなアプリケーションを組み合わせることで1つのWEBアプリケーションを構築することが推奨される風潮があります。この辺りのことはDjango Best Practiceを参考にしてください。独立したアプリケーションを集積するメリットは他のWEBアプリを開発する時に移植性が高い設計ができるという利点があります。どの単位でアプリケーションを区切るかというのは難しい問題ですが、他の機能との相互作用がない独立した機能の場合は1つのアプリケーションとして分けて汎用性の高い設計をしておくと、繰り返す使えるモジュールとして使えるようになります。

Djangoアプリケーションはモデルを有したモジュールであり、配布することも可能です。他のWEBアプリで用いていたアプリケーションをインポートするだけで、そっくり機能を移植することができれば理想的な設計だと思います。

ただ、現実的な問題としてテンプレートが絡む場合には単順な移植が困難なことも多いです。多くのテンプレートはWEBアプリ固有のものが多く、多層構造で依存性が高いためです。残念ながら筆者も抽象度が高く汎用性の高い設計を目指して奮闘中の身であり、多くは語れません。本ブログでも設計が拙い部分は多々あると思いますが、お気づきの点はご指摘、ご指導いただけると幸甚です。

アプリケーションを生成する

今回は掲示板アプリを作成するため”base”という名前のアプリケーションを追加します。このbaseアプリケーションはWEBアプリの基盤としてトップページや利用規約、プライバシーポリシーといった基本的な構成を機能させるためのアプリケーションとなります。

※baseアプリケーションは利用規約等の静的なページ(TOPページは除く)の表示をまとめて行うアプリケーションですが、必ずしもこのようなアプリケーションが必要なわけではありません。


$ source venv/bin/activate
(venv)$ cd mysite
(venv)$ ./manage startapp base

これでthreadアプリケーションが生成されました。

アプリケーションを組み込む

生成したアプリケーションはプロジェクトに組み込んで使用します。
settings.pyに追記します


 INSTALLED_APPS = [
     'django.contrib.admin',
     'django.contrib.auth',
     'django.contrib.contenttypes',
     'django.contrib.sessions',
     'django.contrib.messages',
     'django.contrib.staticfiles',
+    'base',
 ]

アプリケーションのURL設定

生成したbaseディレクトリ内に新規ファイルurls.pyを生成しましょう。中身はこうなります。

base/urls.py


from django.urls import path

name = 'base'

urlpatterns = []

一方でmysiteディレクトリ内のurls.pyにも追記します。


- from django.urls import path
+ from django.urls import path, include
+ import base


 urlpatterns = [
     path('admin/', admin.site.urls),
+    path('', include('base.urls'))
 ]

これはドメイン直下の部分(http://my.domain.com/ココの部分)がbaseアプリケーションのurls.pyに直結されたことを意味します。この意味は追々分かってくると思います。

最後に

ここまでがアプリケーションの生成と追加でした。次回はこのbaseアプリケーションにビューとテンプレートを追加してDjangoにおける表示について学習します。

Sponsored Link


コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です