我在 appengine 上使用 Django 的模板,但遇到一个问题,即我从另一个包导入的类没有正确地提供给模板上下文。上下文在代码中设置,但在模板中呈现后为空。
从广义上讲,这就是代码。 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>
当它在同一个文件中定义时。
关于什么可能导致这种行为的任何线索?
请您参考如下方法:
如果您需要自定义上下文类,它应该扩展 Django 的 BaseContext。否则它不会有常规上下文的默认行为。
from django.template import BaseContext
class MyClass(BaseContext):
# Your stuff here
pass
