Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django自定义标记未呈现(GAE)_Python_Django_Google App Engine - Fatal编程技术网

Python Django自定义标记未呈现(GAE)

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

我正在尝试用Google App Engine创建Django自定义标记,但由于某些原因,它不能一直工作。我相信我的标记在Django解析它们时已正确注册,但从未调用render方法。最奇怪的是,当我的标记放在for循环{%for…%}内时,它就可以工作,但决不能放在外部

代码如下:

在django/mytags.py中

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-添加