AppEngine上的自定义django模板标签问题

时间:2010-10-30 16:31:25

标签: django google-app-engine templates

所以我在这上面撞墙。我觉得我已经解释了我发现的文档和示例,但这似乎不会消失。

这是标签代码:

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

我真的很讨厌要求某人修改我的代码,但我似乎无法弄清楚为什么这不起作用。任何提示或指示都会非常有用。

JC

2 个答案:

答案 0 :(得分:4)

事实证明,当您使用我用于注册自定义标记的方法时,您不需要在我的示例模板顶部使用load语句。

答案 1 :(得分:2)

有关此问题的详细说明,请参阅http://www.hipatic.com/2012/11/appengine-python-27-django-custom.html

问题的核心在于Google App Engine中有两个Djangos:

  1. AppEngines的内部Django(如果你愿意,可以使用“Webapp Django”)
  2. 图书馆Django(“常规”Django)
  3. 本文提供了2个示例,阐明了每个示例的用法。 它还继续介绍一些可用的文档如何导致混合这两种方法,这似乎是问题中提出的问题,其中使用了{% load my_tags %} Library Django 所需)使用 WebApp Django ,从而产生TemplateSyntaxError: 'my_tags' is not a valid tag library错误。