2010-10-30 9 views
6

Así que me he golpeado la cabeza contra la pared en esto. Siento que he interpretado los documentos y ejemplos que encontré, pero esto simplemente no parece desaparecer.Problema de etiqueta de plantilla personalizada de django en App Engine

Aquí es el código de la etiqueta:

from google.appengine.ext import webapp 

register = webapp.template.create_template_register() 

def test_tag(): 
    return "TEST!" 

register.simple_tag(test_tag) 

Este es el código principal:

from google.appengine.ext import webapp 
from google.appengine.ext.webapp import util, template 

webapp.template.register_template_library('my_tags') 

class MainHandler(webapp.RequestHandler): 
    def get(self): 
     self.response.out.write(template.render("test.html", {})) 

def main(): 
    application = webapp.WSGIApplication([('/', MainHandler)], debug=True) 
    util.run_wsgi_app(application) 

if __name__ == '__main__': 
    main() 

Aquí está la plantilla:

{% load my_tags %} 
<html>{% test_tag %}></html> 

Aquí está el error:

File "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/lib/django/django/template/defaulttags.py", line 750, in load 
    raise TemplateSyntaxError, "'%s' is not a valid tag library: %s" % (taglib, e) 
TemplateSyntaxError: 'my_tags' is not a valid tag library: Could not load template library from django.templatetags.my_tags, No module named my_tags 

Realmente odio pedir a alguien que arregle mi código, pero parece que no puedo entender por qué esto no funciona. Cualquier sugerencia o puntero sería muy apreciado.

jc

Respuesta

4

Así que resulta que cuando se utiliza el método que utiliza para registrar la etiqueta personalizada, no es necesario utilizar la instrucción de carga en la parte superior de mi plantilla de ejemplo.

2

Para una explicación bien por escrito de este tema ver http://www.hipatic.com/2012/11/appengine-python-27-django-custom.html

El corazón de la cuestión aquí es que hay dos Djangos en Google App Engine:

  1. de AppEngines Django interna ("Webapp Django" si se quiere)
  2. Biblioteca Django ("regular" Django)

el artículo proporciona 2 ejemplos que aclaran el uso de cada uno de mi. También continúa acerca de cómo algunos de los documentos disponibles conduce a machacar los dos enfoques, que parece ser lo que se presenta en la pregunta, donde se utilizó {% load my_tags %} (necesario para Biblioteca Django) con aplicación web Django, produciendo de esta manera el error TemplateSyntaxError: 'my_tags' is not a valid tag library.

Cuestiones relacionadas