質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Django

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

Anaconda

Anacondaは、Python本体とPythonで利用されるライブラリを一括でインストールできるパッケージです。環境構築が容易になるため、Python開発者間ではよく利用されており、商用目的としても利用できます。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

7555閲覧

Django テンプレートを認識しない

Madai

総合スコア29

Django

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

Anaconda

Anacondaは、Python本体とPythonで利用されるライブラリを一括でインストールできるパッケージです。環境構築が容易になるため、Python開発者間ではよく利用されており、商用目的としても利用できます。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2020/07/23 05:18

編集2020/07/23 06:13

ディレクトリ構成、ソースは下記のとおりです。
調べても解決が難しく、お力添えいただきたくお願いします。

環境:Anaconda,Spyder
アクセス先:http://localhost:8000/top/
エラーメッセージ:TemplateDoesNotExist at /top/

【ディレクトリ構成】
![イメージ説明]

【settings.py TEMPLATES部分】
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [],
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
],
},
},
]
※'DIRS'が空欄なので、templates直下のtop.htmlを探して認識されるはず・・・

【system.urls.py】
from django.contrib import admin
from django.urls import path, include

urlpatterns = [
path('admin/', admin.site.urls),
path('top/', include('top.urls')),

]

【top.urls.py】
from django.urls import path
from.import views

app_name = 'top'
urlpatterns = [
path('', views.TopView.as_view(), name="top"),
]

【top.views.py】
from django.views import generic

class TopView(generic.TemplateView):
template_name = "top.html"

【top.templates.top.html】

<!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <title>Top</title> </head> <body>
<h1>Hello World</h1>
</body> </html>

どうぞ、よろしくおねがいします。

【追記】
エクセス先のエラーメッセージでは下記のようになぜか異なるフォルダのtemplatesを探しているようでした。
Template-loader postmortem
Django tried loading these templates, in this order:

Using engine django:

django.template.loaders.app_directories.Loader: C:~\anaconda3\envs\django\lib\site-packages\django\contrib\admin\templates\top.html (Source does not exist)
django.template.loaders.app_directories.Loader: C:~\anaconda3\envs\django\lib\site-packages\django\contrib\auth\templates\top.html (Source does not exist)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

djangoのテンプレートはsystemのsettings.pyのTEMPLATESの設定を変更しない限り、初期設定ではview.pyなどがあるディレクトリに置くことになっています、この場合だとtopからtemplatesフォルダーにフォルダーの場所を変更するとうまくいくと思います。

投稿2020/07/23 05:59

mi.dai.tomo

総合スコア40

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Madai

2020/07/23 07:58 編集

すいません。 ツリーの表示が崩れておりましたので、修正しました。 SYSTEM\top\templates\top.html の階層配置しておりますが、上記のエラーとなります。
mi.dai.tomo

2020/07/23 06:31

APP_DIRSがTrueだとINSTALLED_APPS に書いてある場所のテンプレートを探すので、この場合だとtemplatesのところでtopという名前のフォルダを作成して、その中にテンプレートファイルを入れれば今くいくと思います。 APP_DIRSがFalseだとdjangoの管理サイトのテンプレートが探されなくなるのであまり変更しないほうがいいです。
mi.dai.tomo

2020/07/23 06:40

忘れていましたがDIRSが空のときはmanage.pyと同じ階層を探すのでmanage.py等があるところにtemplatesフォルダーを置く必要があります。
Madai

2020/07/23 08:24 編集

・settings.pyのINSTALLED_APPSを下記します。 INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', ] ・SYSTEM\templates\top.html と SYSTEM\templates\top\top.htmlのディレクトリ階層を用意しても駄目でした。
mi.dai.tomo

2020/07/23 08:47

INSTALLED_APPS にtopを追加しないとtopのてtemplatesをさがしてくれないので INSTALLED_APPS = [ 'top', 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', ] みたいに入力すると多分うまくいくと思います
Madai

2020/07/23 09:01

うまくいきました。 ありがとうございます! なるほど、プロジェクト内に用意したtopアプリケーションもINSTALLED_APPSに含めて、Djangoに有効認識させる必要があるということですね。 参考にしていた参考書には説明がなかったので、大変助かりました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問