Проблема с пользовательским тегом django в AppEngine - PullRequest
6 голосов
/ 30 октября 2010

Поэтому я бью себя об стену об этом. Я чувствую, что я истолковал документы и примеры, которые я нашел, но это просто не уйдет.

Вот код тега:

from google.appengine.ext import webapp

register = webapp.template.create_template_register()

def test_tag():
    return "TEST!"

register.simple_tag(test_tag)

Вот основной код:

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()

Вот шаблон:

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

Вот ошибка:

  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

Мне очень не хочется просить кого-то исправить мой код, но я не могу понять, почему это не работает Будем весьма благодарны за любые подсказки или указатели.

х

Ответы [ 2 ]

4 голосов
/ 01 ноября 2010

Так что получается, что когда вы используете метод, который я использовал для регистрации пользовательского тега, вам не нужно использовать оператор загрузки в верхней части моего примера шаблона.

2 голосов
/ 06 сентября 2013

Подробное объяснение этой проблемы см. В http://www.hipatic.com/2012/11/appengine-python-27-django-custom.html

Суть проблемы в том, что в Google App Engine есть два Django:

  1. Внутренний Django AppEngines(«Webapp Django», если хотите)
  2. Библиотека Django («обычный» Django)

В статье приводятся 2 примера, поясняющих использование каждого из них.Также рассказывается о том, как часть доступной документации приводит к смешиванию двух подходов, что, по-видимому, является тем, что представлено в вопросе, где {% load my_tags %} (необходим для Library Django ) использовался с WebApp Django , что приводит к ошибке TemplateSyntaxError: 'my_tags' is not a valid tag library.

...