所以我在这上面撞墙。我觉得我已经解释了我发现的文档和示例,但这似乎不会消失。
这是标签代码:
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
答案 0 :(得分:4)
事实证明,当您使用我用于注册自定义标记的方法时,您不需要在我的示例模板顶部使用load语句。
答案 1 :(得分:2)
有关此问题的详细说明,请参阅http://www.hipatic.com/2012/11/appengine-python-27-django-custom.html
问题的核心在于Google App Engine中有两个Djangos:
本文提供了2个示例,阐明了每个示例的用法。
它还继续介绍一些可用的文档如何导致混合这两种方法,这似乎是问题中提出的问题,其中使用了{% load my_tags %}
( Library Django 所需)使用 WebApp Django ,从而产生TemplateSyntaxError: 'my_tags' is not a valid tag library
错误。