我正在使用Django对appengine的模板,并且遇到一个问题,即我从另一个包导入的类没有正确地提供给模板上下文。上下文在代码中设置,但在模板中呈现后为空。
从广义上讲,这是代码。 prop1在下面第一个示例中的模板中不可用,但在第二个示例中。 MyClass在两种情况下都是相同的。
这不起作用:
from module import MyClass
context = MyClass()
self.response.out.write(template.render(path, context))
这样做:
class MyClass(object):
def __init__(self):
self.prop1 = "prop1"
context = MyClass()
self.response.out.write(template.render(path, context))
如果我在上面的代码中记录上下文,我得到:
<module.MyClass object at 0x107b1e450>
导入时,以及:
<__main__.MyClass object at 0x103759390>
当它在同一个文件中定义时。
有什么可能导致这种行为的线索?
答案 0 :(得分:0)
如果你需要自定义上下文类,它应该扩展Django的BaseContext
。否则,它将不具有常规上下文的默认行为。
from django.template import BaseContext
class MyClass(BaseContext):
# Your stuff here
pass