2010-10-30 76 views
6

因此,我已经在我的头上靠在墙上了。我觉得我已经解释了我发现的文档和例子,但这似乎不会消失。AppEngine上的自定义django模板标签问题

下面是标签代码:

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

回答

4

所以事实证明,当你使用我用于注册自定义标签的方法,你不需要使用负载语句在我的例子模板的顶部。

2

对于这一问题的一个良好的书面说明,请参见http://www.hipatic.com/2012/11/appengine-python-27-django-custom.html

这里的问题的心脏是有两个Django的谷歌应用程序引擎:

  1. AppEngines内部的Django(“的webapp的Django”如果你喜欢)
  2. 库的Django(“常规”的Django)

本文提供的两个例子是澄清的每个上使用即 它还会继续介绍一些可用文档如何导致混合两种方法,这似乎是问题中提出的问题,其中{% load my_tags %}(需要Library Django)与WebApp Django一起使用,从而生成TemplateSyntaxError: 'my_tags' is not a valid tag library错误。