跨越类和函数的python django自变量

时间:2015-09-02 05:34:08

标签: 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)
        return

据我所知,在自制中赋值是全局的。在我得到的时候,我正在为self.email分配电子邮件,也应该通过邮件进行访问。但它现在正在努力。在帖子中我无法获得self.email

任何人都可以指导我完成这个吗?

2 个答案:

答案 0 :(得分:1)

此处的问题是,一次只会调用getpost中的一个。

如果您希望self.emailget方法同时提供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)

答案 1 :(得分:0)

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

考虑重写您的方法,使您不需要像这样存储电子邮件(例如,如果必须,请将其存储在request.session中,但根据具体情况,可能有更好的方法来执行此操作你真的想做。)