2012-06-14 18 views
10

Estoy intentando crear mi primera aplicación GAE con jinja2. Después de superar una docena de pequeños errores, ahora estoy atascado con esto:Problemas con 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 

Aquí mi archivo 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" 

Aquí mi código:

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) 

Aquí mi plantilla 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> 

A pesar de la er mensaje de ROR, tengo una carpeta llamada "plantillas" y, dentro de ella, se creó el archivo index.html: Jinja2

enter image description here

enter image description here

enter image description here

También he instalado.

¿Alguien tiene alguna idea de la causa de este error ahora?

+0

Hey, ¿Cómo cargar una plantilla de "templates/subcarpeta1"? ¿Puedes ayudarme? –

Respuesta

1

Bueno, mi error fue simple y tonto. Tengo crear el archivo "index.html" de la manera incorrecta (here de la manera correcta). Por lo tanto, mi archivo "index.html" era de hecho un archivo ".text" (porque simplemente lo cambio a "index.html" en lugar de "save as" index.html"). ¡Gracias por la ayuda, muchachos!

2

Dos ideas basadas en conseguir mi primer esfuerzo de GAE con Jinja2 para trabajar. Primero, en su archivo yaml, tiene "-url: ." aunque utilicé "-url: /." en base a los tutoriales que vi. Sin embargo, esto puede ser irrelevante para su problema. En segundo lugar, se utiliza la guía de la página anterior para establecí mi procesador Jinja2 y no tenía ningún problema con la plantilla que se encuentran en las plantillas de subdirectorio del directorio de la aplicación: http://webapp-improved.appspot.com/api/webapp2_extras/jinja2.html#module-webapp2_extras.jinja2

12

Intente utilizar

loader=jinja2.FileSystemLoader('templates') 

en lugar de

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

Funciona para mí.

+0

Hola, @ v0hkus, gracias por su respuesta, pero el error persiste: Archivo "C: \ Archivos de programa (x86) \ Google \ google_appengine \ lib \ jinja2 \ jinja2 \ loaders.py", línea 180, en get_source raise TemplateNotFound (template) TemplateNotFound: index.html INFO 2012-06-17 14: 20: 15,908 dev_appserver.py:2891] "GET/HTTP/1.1" 500 - ¡Gracias de nuevo! – craftApprentice

+1

Después de mucho googlear, finalmente lo conseguí ... Gracias. –

+3

¿Cómo cargamos la plantilla desde "templates/subfolder1"? –

6

Esto resolvió por mí:

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

Por alguna razón, en realidad tuve que eliminar los archivos y luego volver a agregarlos para que Flask detecte que los archivos estaban allí. Debe haberlos creado incorrectamente inicialmente – sofly

Cuestiones relacionadas