Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
跨类和函数的python django自变量_Python_Django - Fatal编程技术网

跨类和函数的python django自变量

跨类和函数的python django自变量,python,django,Python,Django,我的观点是: class MyView(View): def get(self, request): email = get_email() self.email = email return def post(self, request, **kwargs): if not self.email in kwargs['email'] return redirect(some_url)

我的观点是:

class MyView(View):
    def get(self, request):
        email  = get_email()
        self.email = email
        return 

    def post(self, request, **kwargs):
        if not self.email in kwargs['email']
            return redirect(some_url)
        return
正如我所知,在self make中指定值对类来说是全局的。在我的get中,我将电子邮件分配给self.email,它也应该通过post访问。但它现在起作用了。在post中,我无法收到self.email


有人能给我指点一下吗?

这里的问题是每次只调用
get
post
中的一个

如果您希望
self.email
get
post
方法中都可用。您应该重写
dispatch
方法。
dispatch
方法是类在调用可调用的入口点
as_view
类方法时调用的方法

class MyView(View):

    def dispatch(self, request, *args, **kwargs):
        email  = get_email()
        self.email = email
        return super(MyView, self).dispatch(request, *args, **kwargs)

当您发送
get
请求时,它与发送
post
请求时是不同的
MyView
实例。每个请求都是一个新实例

考虑以这样一种方式重写您的方法,即您不需要像这样存储电子邮件(例如,如果必须的话,可以将其存储在request.session中,但根据您真正想要做的事情,可能有更好的方法)