web-dev-qa-db-ja.com

Jinja2の問題:TemplateNotFound:index.html

Jinja2を使用して最初のGAEアプリを構築しようとしています。ダースの小さなエラーを克服した後、今私はこれで立ち往生しています:

Traceback (most recent call last):

File "C:\Program Files (x86)\Google\google_appengine\lib\webapp2\webapp2.py", line 1536, in __call__
    rv = self.handle_exception(request, response, e)
  File "C:\Program Files (x86)\Google\google_appengine\lib\webapp2\webapp2.py", line 1530, in __call__
    rv = self.router.dispatch(request, response)
  File "C:\Program Files (x86)\Google\google_appengine\lib\webapp2\webapp2.py", line 1278, in default_dispatcher
    return route.handler_adapter(request, response)
  File "C:\Program Files (x86)\Google\google_appengine\lib\webapp2\webapp2.py", line 1102, in __call__
    return handler.dispatch()
  File "C:\Program Files (x86)\Google\google_appengine\lib\webapp2\webapp2.py", line 572, in dispatch
    return self.handle_exception(e, self.app.debug)
  File "C:\Program Files (x86)\Google\google_appengine\lib\webapp2\webapp2.py", line 570, in dispatch
    return method(*args, **kwargs)
  File "C:\Users\CG\Documents\udacity\HiMon\main.py", line 31, in get
    template = jinja_environment.get_template('index.html')
  File "C:\Program Files (x86)\Google\google_appengine\lib\jinja2\jinja2\environment.py", line 719, in get_template
    return self._load_template(name, self.make_globals(globals))
  File "C:\Program Files (x86)\Google\google_appengine\lib\jinja2\jinja2\environment.py", line 693, in _load_template
    template = self.loader.load(self, name, globals)
  File "C:\Program Files (x86)\Google\google_appengine\lib\jinja2\jinja2\loaders.py", line 115, in load
    source, filename, uptodate = self.get_source(environment, name)
  File "C:\Program Files (x86)\Google\google_appengine\lib\jinja2\jinja2\loaders.py", line 180, in get_source
    raise TemplateNotFound(template)
TemplateNotFound: index.html

ここに私のyamlファイルがあります:

application: himother
version: 1
runtime: python27
api_version: 1
threadsafe: yes

handlers:
- url: /favicon\.ico
  static_files: favicon.ico
  upload: favicon\.ico

- url: .*
  script: main.app

libraries:
- name: webapp2
  version: "2.5.1"
- name: jinja2
  version: "2.6"

ここに私のコード:

import os
import webapp2

import jinja2

jinja_environment = jinja2.Environment(autoescape=True,
    loader=jinja2.FileSystemLoader(os.path.join(os.path.dirname(__file__), 'templates')))

class MainPage(webapp2.RequestHandler):
    def get(self):
        template_values = {
            'name': 'Serendipo',
            'verb': 'extremely happy'
        }

        template = jinja_environment.get_template('index.html')
        self.response.out.write(template.render(template_values))

app = webapp2.WSGIApplication([('/', MainPage)],
                              debug=True)

ここに私の.htmlテンプレートがあります:

<!DOCTYPE html>
<html>
    <head>
        <title>Look Ma, I'm using Jinja!</title>
    </head>
    <body>
        Hi there - I'm {{ name }}, and I {{ verb }} programming!
    </body>
</html>

エラーメッセージにもかかわらず、「templates」というフォルダがあり、その中にindex.htmlファイルを作成しました。

enter image description here

enter image description here

enter image description here

Jinja2もインストールしました。

誰かが今このエラーの原因について何か考えを持っていますか?

14
craftApprentice

まあ、私のエラーは単純でばかげていました。ファイル「index.html」を間違った方法で作成しました( ここ 正しい方法)。つまり、私の「index.html」ファイルは確かに「.text」ファイルでした(名前を "save as" index.html " ではなく" index.html "に変更したためです)。ありがとうございます。助けて、みんな!

1
craftApprentice

使用してみてください

loader=jinja2.FileSystemLoader('templates')

の代わりに

loader=jinja2.FileSystemLoader(os.path.join(os.path.dirname(__file__), 'templates'))

わたしにはできる。

14
wombatonfire

これは私のためにそれを解決しました:

mkdir templates
echo "hello world" > templates/index.html
7
jcarballo

Jinja2での最初のGAEの取り組みを機能させることに基づいた2つの考え。まず、yamlファイルには「-url:。」がありますが、私が見たチュートリアルに基づいて「-url:/。」を使用しました。ただし、これは問題とは無関係である可能性があります。次に、このページのガイダンスを使用して、Jinja2レンダラーを確立する方法を説明しましたが、アプリケーションディレクトリのtemplatesサブディレクトリにあるテンプレートに問題はありませんでした: http://webapp-improved.appspot.com/ api/webapp2_extras/jinja2.html#module-webapp2_extras.jinja2

2
Rich Walsh

同じエラーが表示され、すべての回答を試しました。後で、最初にhtmlファイルを検索するための適切なフォルダーを使用して環境を構成する必要があることを知りました。そうしないと、jinja2がファイルを見つけることができなくなります。

次の行でエラーが削除されます。

env = Environment(loader=FileSystemLoader(searchpath='C:\Folder\of\html\file')
template = env.get_template('Name_of_file.html')
0
AbhiGupta