我有一个观点:
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
任何人都可以指导我完成这个吗?
答案 0 :(得分:1)
此处的问题是,一次只会调用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)
答案 1 :(得分:0)
当您发送get
请求时,MyView
的实例与发送post
请求的情况不同。每个请求都是一个新实例。
考虑重写您的方法,使您不需要像这样存储电子邮件(例如,如果必须,请将其存储在request.session中,但根据具体情况,可能有更好的方法来执行此操作你真的想做。)