2017-06-02 45 views
2

私はPyCharmに編集したHTMLを表示するためにレンダリングを使用してみましたが、私はアドレス入力されたとき:127.0.0.1:8000/index/を、以下のTemplateDoesNotExistの例外が登場:TemplateDoesNotExistエラー(Pythonの3.6.1に、Django 1.11.1、PyCharm)

/インデックス/ index.htmlを リクエストメソッドで

TemplateDoesNotExist:GET リクエストURL:http://127.0.0.1:8000/index/ Djangoのバージョン:1.11.1 例外の種類:TemplateDoesNotExist 例外値:D: 例外場所のindex.html \ python3.6.1 \ lib \ site-packages \ django \ template \ lo get_templateでader.py、ライン25 Pythonの実行可能ファイル:D:\ python3.6.1 \ python.exe Pythonのバージョン:3.6.1 Pythonのパス:
[ 'C:\ Users \ユーザー管理者\ゲスト'、 「D D:¥python3.6.1¥DLL '、 ' D:¥python3.6.1¥lib '、 ' D:¥python3.6.1 '、 ' D:\ python3.6.1 \ libに\のsite-packages'] サーバー時間:金、午前三時30分58秒+ 0000`TemplateDoesNotExistで/インデックス/

settings.py 2017 6月2日:

ROOT_URLCONF = 'guest.urls' 
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', 
     ], 
    }, 
}, 
] 

views.py:PyCharmの

from django.shortcuts import render 

# Create your views here. 
def index(request): 
return render(request,"index.html") 

スクリーンショット:

enter image description here

私はStackOverflowの上で提供されるいくつかの方法を試してみましたが、彼らは動作しません。この例外は間違ったディレクトリによって引き起こされますか?どのように私はそのような状況に対処できますか?この時

+0

間違ったdirs_によって引き起こされた...あなたはどんなdirsも持っていません: '' DIRS ':[] ' –

+0

' collectstatics'をやったことがありますか? 'settings.py 'file?すべてのテンプレートを静的/テンプレートフォルダに入れましたか? –

+2

@ PiyushS.Wanareあなたのコメントのすべての部分が間違っています。なぜcollectstaticはテンプレートと関係がありますか?なぜテンプレートは静的ディレクトリにありますか? –

答えて

7

ルック:

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': [], 

あなたはどこのテンプレートを探す場所をDjangoに指示する必要があります。メインプロジェクトルートにテンプレートフォルダがある場合。

root 
    app1 
     ... 
    templates/ 
     what we're referencing with os.path.join(BASE_DIR, "templates") 
     .... 
    static/ 
     what we're referencing with STATIC_ROOT = os.path.join(BASE_DIR, "static") 
    ... 

あなたはアプリの内部でテンプレートを配置している場合:次に、これはあなたのプロジェクトは、このような構造を持っていると仮定し

os.path.join(BASE_DIR, 'templates') 

追加します。 2つのことがあります。

あなたのプロジェクト内のアプリがテンプレートフォルダ

app name (folder) 
    templates (folder) 
     app name (folder) 
      (template files) e.g. - "base.html" 

ためにこのような構造が必要になりますが、この行に

os.path.join(BASE_DIR, APP NAME, "templates") 

を追加する必要があります補遺:間違いなくあなたは、この問題に実行されますまあ...だからこそ行きましょう。

あなたは(ない基本テンプレートフォルダ内)アプリであるテンプレートを含む/拡張している場合、あなたは彼らが置かれている場所を参照する必要があります。

例:私は/「myappに/テンプレートでテンプレートを持っていますmyapp/template.html "と私はそれを含めたいと思う。

次に、{% include "myapp/template.html" %}、または{% extend "myapp/template.html" %}を拡張するとします。それらが基本テンプレートフォルダにある場合は、そのまま直接参照することができます"template.html"

+0

あなたの辛抱強く説明してくれてありがとうございました。テンプレート(フォルダ)は私のアプリのサインの下に設定されていました。私はアプリ名を「サイン」に追加しました: –

+0

忍耐強く説明してくれてありがとう、 )は、私のアプリの「サイン」の下に設定されていましたが、「DIRS」というアプリケーション名を追加することにしました。 「記号」という名前は定義されませんでした。私は非常に申し訳ありませんが私はpythonについてはほとんど知られていませんが、私は本当に今直面していることをやりたいです。 –

+0

それは文字列ではありません...引用符を使用してください。厳しく聞こえることはありませんが、あなたがこれを知らない場合は、Djangoを使用しようとするべきではありません。これは基本的なPythonであり、Djangoは高度なPythonです。少なくとも、いくつかのチュートリアルを実行すれば、頭痛を軽減できます。 – Pythonista

1

私は同じ問題があります。あなたは「settings.py」ファイルにアプリケーションをインストールしなかった場合、それは主に引き起こされた

ちょうどあなたのsettings.pyファイルでこれを行うと、あなたのエラーは、ペーストの代わりに

INSTALLED_APPS = [ 
    '<app name>.apps.<app name>Config', 
] 

を消えてしまいますあなたの "app name"

関連する問題