django全局对象实例可访问性

时间:2014-02-03 06:25:48

标签: django python-2.7

这可能是一个noOb问题。

是否可以将全局实例定义为:

# testing.py
class Test(object):
    def do_something(self):
       etc....

test = Test()

...这样我就可以导入“test”(即:来自测试导入测试)并使用它。即:

   test.do_something()

...每次发出请求时都不必在视图中每次都实例化它。即:

       def MyView(View):
           def get(self , request, *args, **kwargs):
               test = Test()
               test.do_something()
               return HttpResponse('testing')

我也不想把它放在一个基本处理程序中(通过调用self.test.do_something()),我想在任何视图中,通过“test”对任何请求进行完全访问。任何模块等...

我想简单地说:

   def MyView(View):
       def get(self , request, *args, **kwargs):
           test.do_something()
           return HttpResponse('testing')

对于这种情况,这是最好的方法吗?感谢您的任何建议。

1 个答案:

答案 0 :(得分:0)

这取决于您的对象是否存储状态。如果是这样,您应该意识到该状态将持续跨越请求。如果存储的东西像数据库连接一样通用,那可能没问题。但是,如果它与请求或用户有任何关联,那么您将在请求之间获得数据泄漏,这是一件非常糟糕的事情。

另一方面,如果你没有存储状态,你可能不希望它成为一个类:只需使do_something成为一个独立的函数并将其导入到你需要的任何地方。