视图.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"))