2012-06-14 3 views
10

Ich versuche meine erste GAE App mit jinja2 zu bauen. ein Dutzend kleine Fehler Nach Überwindung, jetzt bin ich mit diesem fest:Probleme mit Jinja2: TemplateNotFound: index.html

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 

meine yaml Datei hier: mein Code

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" 

hier:

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) 

Hier meine .html-Vorlage :

<!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> 

Trotz der er ror Nachricht, ich habe einen Ordner "Vorlagen" genannt, und in ihm, erstellt die Datei index.html:

enter image description here

enter image description here

enter image description here

Ich habe auch installiert jinja2.

Hat jemand eine Idee von der Ursache dieses Fehlers jetzt?

+0

Hey, wie eine Vorlage aus "templates/subfolder1" laden? Kannst du mir bitte helfen? –

Antwort

1

Nun, mein Fehler war einfach und albern. Ich habe die Datei "index.html" falsch erstellt (here der richtige Weg). Also, meine "index.html" Datei war in der Tat eine ".text" -Datei (weil ich sie einfach in "index.html" anstelle von "save as" index.html" umbenenne). Danke für die Hilfe, Jungs!

2

Zwei Gedanken basieren darauf, meine erste GAE-Anstrengung mit Jinja2 zu bekommen. Zuerst haben Sie in Ihrer Yaml-Datei "-url:. " obwohl ich "-url: /." basierend auf Tutorials, die ich gesehen habe, verwendet habe. Dies kann jedoch für Ihr Problem irrelevant sein. Zweitens habe ich die Anleitung auf dieser Seite, wie ich meinen Jinja2 Renderer gegründet und hatte kein Problem mit der Vorlage in dem Vorlagenverzeichnis des Anwendungsverzeichnisses gefunden werden: http://webapp-improved.appspot.com/api/webapp2_extras/jinja2.html#module-webapp2_extras.jinja2

12

Try

verwendet
loader=jinja2.FileSystemLoader('templates') 

statt

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

Es funktioniert für mich.

+0

Hallo, @ v0hkus, danke für deine Antwort, aber der Fehler bleibt bestehen: Datei "C: \ Programme (x86) \ Google \ google_appengine \ lib \ jinja2 \ jinja2 \ loaders.py", Zeile 180, in get_source Raise TemplateNotFound (Vorlage) TemplateNotFound: index.html INFO 2012-06-17 14: 20: 15.908 dev_appserver.py:2891] "GET/HTTP/1.1" 500 - Nochmals vielen Dank! – craftApprentice

+1

Nach zu viel googeln, endlich habe ich es funktioniert .... Danke. –

+3

Wie laden wir eine Vorlage aus "templates/subfolder1"? –

6

Dies löst es für mich:

mkdir templates 
echo "hello world" > templates/index.html 
+0

Aus irgendeinem Grund musste ich die Dateien tatsächlich löschen und sie dann neu hinzufügen, damit Flask erkennen konnte, dass die Dateien vorhanden waren. Muß sie ursprünglich falsch gemacht haben – sofly