スポンサーリンク

【Django】アプリケーション内にurls.pyとtemplatesディレクトリを作りパスを通す

スポンサーリンク
スポンサーリンク
この記事は約6分で読めます。

プロジェクトのtemplatesをアプリケーションのtemplatesに変更する

前回の記事では、settings.pyの設定変更と、ルートディレクトリ(Blog)にtemplatesディレクトリを作成してそのパスを通すまでの作業を行った。

この記事では、ルートディレクトリ(Blog)に作成したtemplatesディレクトリを、アプリケーションディレクトリ(Blog_app)に移動し、Djangoにアプリケーションディレクトリ(Blog_app)のtemplatesディレクトリを認識させる手順をまとめる。

 

現在のディレクトリ構成は以下の通り。

■ディレクトリ構成

 

前:【Django】settings.pyでの初期設定(INSTALLED_APPS、TEMPLATES、タイムゾーン、言語)

 

 

アプリケーション内にurls.pyとtemplatesディレクトリを作りパスを通す

 

config内のsetting.pyを編集

~デスクトップ/Blog/config/settings.py

 

前回の記事で以下のコードを記述していたが、

‘DIRS’: [BASE_DIR / ‘templates’],
今回は以下のように間に’Blog_app’を追加した。
‘DIRS’: [BASE_DIR / ‘Blog_app’ / ‘templates’],

これにより、Djangoはルートディレクトリ(BASE_DIR)内のアプリケーションディレクトリ(Blog_app)にあるtemplatesディレクトリをミニくことができる。

 

 

config内のurls.pyに追記

~デスクトップ/Blog/config/urls.py

 

まず2行目のコードでincludeをインポートしておく。includeは別のファイルからURL構成を取り込むために使う関数。

from django.urls import path, include

今回はアプリケーションディレクトリ(Blog_app)内のurls.pyで規定するURL構成を取り込み、Blog_app内のurls.pyにリクエストをつなぐために使用する。

これで開発用サーバーを起動して”http://127.0.0.1:8000/Blog_app”ではじまるURLでアクセスしてきた場合は、全てBlog_app内のurls.pyがURLに応じてリクエストを振り分けることができるようになる。

※今の段階ではまだアプリケーションディレクトリ(Blog_app)にはurls.pyがないので、次の手順で作成する。

1つのプロジェクト内で複数のアプリケーションを作成する場合もあり、include関数はアプリケーションごとにURLパターンを作成する際に役立つ。

 

続いて、以下のコードでconfigディレクトリのurls.pyからアプリケーションディレクトリ(Blog_app)のurls.pyにパスを通している。

path(‘Blog_app/’, include(‘Blog_app.urls’))

 

path関数の第一引数ではURLパターンを記述している。

開発用サーバーを起動して”http://127.0.0.1:8000/Blog_app/”にアクセスすると、第二引数で指定したアプリケーションのurls.pyにリクエストをつなぐことができる。

Blog_app以外にもアプリケーションがある場合は、そのアプリケーション内のurls.pyを指定することでそちらにリクエストをつなぐこともできる。

 

第二引数ではinclude関数を使ってアプリケーションディレクトリ(Blog_app)内のurls.pyを指定している。

“http://127.0.0.1:8000/Blog_app/”という形ではじまるURLでアクセスがあった場合に、アプリケーションディレクトリ(Blog_app)のurls.pyで規定するURL構成をインクルードしている。

 

 

アプリケーションディレクトリ内にurls.pyを作成

アプリケーションディレクトリ(Blog_app)にurls.pyを作成する。

ディレクトリ構成は以下の通りになる。

■ディレクトリ構成

 

アプリケーションディレクトリ(Blog_app)に新規作成したurls.pyの中身はまだ空でも良い。

 

 

アプリケーションディレクトリ内にtemplatesディレクトリを作成

Blog_app(アプリケーションディレクトリ)内にtemplatesディレクトリを作成する。

ここのtemplatesは他の名前でも良いが、その場合はconfigディレクトリ内のsettings.pyにあるTEMPLATESで、”DIRS’: [BASE_DIR / ‘templates‘]”で規定する”templates”も他の名前に合わせておく必要がある。

 

さらにtemplatesディレクトリに”Blog_templates”を作成する。

今後、htmlファイルなどはこのBlog_templates内に作成していく。

 

現在のディレクトリ構成は以下の通り。

■ディレクトリ構成

 

ルートディレクトリ(Blog)内にあったtemplatesは使用しなくなるためディレクトリ構成からは除外した。(削除でも良い。)

ここでアプリケーションディレクトリ(Blog_app)のtemplatesをDjangoが見に行くためには、前回の記事でconfigディレクトリ内のsettings.pyで、TEMPLATESで[BASE_DIR / “templates”]を記述した上で、

この記事の「configディレクトリ内のurls.pyに追記」の項目の手順を行う必要がある。

 

 

ここまでの作業を行うことで、ルートディレクトリ内のtemplatesディレクトリではなく、アプリケーションディレクトリ(Blog_app)内のtemplatesをDjangoが見に行くことができるようになった。

 

 

Django記事一覧

 

次:【Django】models.pyでモデル(DBのテーブル)を作成する

 

Django記事一覧

コメント