Django:不能在通用视图中存储 self.xxx 变量?



视图.py

class MyView(View):
    def get(self, request, *args, **kwargs):
        self.foo = "hi"    
    def post(self, request, *args, **kwargs):
        print(self.foo)

GET请求工作,但POST请求不工作。

它会出现错误,AttributeError: 'MyView' object has no attribute 'foo'

我不能将self.xxx中的变量保存到views.py中吗?

get&post方法独立工作,Django在每个请求上创建一个新的MyView实例,这意味着当您第一次运行GET请求时,会创建一个MyView类的实例,foo会被分配一个值,在请求完成后,MyView会被销毁。当您发出POST请求时,会再次创建MyView的新实例,并且它不再具有foo属性。

为了在请求之间保持一些值,您必须使用会话:

class MyView(View):
   def get(self, request, *args, **kwargs):
       request.session['foo'] = "hi"  
   def post(self, request, *args, **kwargs):
       print(request.session.get('foo', "default value"))

最新更新