Skip to main content
 首页 » 编程设计

python之Django 模板上下文不适用于导入的类

2025年05月04日23Renyi-Fan

我在 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