Python Django自定义标记未呈现(GAE)
我正在尝试用Google App Engine创建Django自定义标记,但由于某些原因,它不能一直工作。我相信我的标记在Django解析它们时已正确注册,但从未调用render方法。最奇怪的是,当我的标记放在for循环{%for…%}内时,它就可以工作,但决不能放在外部 代码如下: 在django/mytags.py中Python Django自定义标记未呈现(GAE),python,django,google-app-engine,Python,Django,Google App Engine,我正在尝试用Google App Engine创建Django自定义标记,但由于某些原因,它不能一直工作。我相信我的标记在Django解析它们时已正确注册,但从未调用render方法。最奇怪的是,当我的标记放在for循环{%for…%}内时,它就可以工作,但决不能放在外部 代码如下: 在django/mytags.py中 from django import template from google.appengine.ext import webapp register = webapp.t
from django import template
from google.appengine.ext import webapp
register = webapp.template.create_template_register()
# This works all the time
@register.simple_tag
def hello_world():
return u'Hello world'
@register.tag('foo')
def foo(parser, token):
return FooNode()
class FooNode(template.Node):
def __init__(self):
self.foo = 'foo'
def render(self, context):
return self.foo
在main.py中
from google.appengine.ext.webapp import template
template.register_template_library('django.mytags')
...
self.response.out.write(template.render('main.html', template_values))
在main.html中
{% foo %}
{% for item in items %}
{% foo %}
结果是:
<django.mytags.FooNode object at 0x000000001794BAC8>
foo
foo
foo
...
福
福
福
...
这快把我逼疯了。我怀疑将标记放入for循环会强制渲染节点(应该已经渲染了)。您需要为类添加字符串表示
class FooNode(template.Node):
def __init__(self):
self.foo = 'foo'
def render(self, context):
return self.foo
def __unicode__(self):
return 'string to put in template'
难道你没有忘记添加
{%loadmytags%}
?(应该使用,per)只是一个想法,但是如果您向FooNode
类添加一个\uuuuunicode\uuu()
函数,会怎么样?@frb-添加