Django基于类的视图中self.request和request之间的区别

时间:2016-09-06 00:52:42

标签: python django

在django中,对于ListViewDetailView等基于类的视图,get()post()等方法或开发人员定义的其他函数包括{{1} }和self。我了解到request这些字段实际上是self字段,那么self.requestself.request之间的区别是什么?

示例,这是基于类的视图中的函数,用于处理用户的登录要求:

request

这是用于处理用户注册的函数:

def login(self, request):
    name = request.POST['name']
    pwd = request.POST['password']
    user = authenticate(username=name, password=pwd)

    if user is not None:
        request.session.set_expiry(0)
        login(request, user)
        log_message = 'Login successfully.'
    else:
        log_message = 'Fail to login.'

    return HttpResponseRedirect(reverse('blog:testindex'))

在第一个函数中,它使用了存储在def register(self, request): user_name = self.request.POST['username'] firstname = self.request.POST['firstname'] lastname = self.request.POST['lastname'] pwd = self.request.POST['password'] e_mail = self.request.POST['email'] user = User.objects.create(username=user_name, first_name=firstname, last_name=lastname, email=e_mail) user.set_password(pwd) try: user.save() user = authenticate(username=user_name, password=pwd) login(self.request, user) except Exception: pass else: return HttpResponseRedirect(reverse('blog:testindex')) 中的数据,而在第二个函数中,它使用了request,它们都在功能上运行。有什么区别?

感谢您的回答。

1 个答案:

答案 0 :(得分:6)

对于View的子类,它们是同一个对象。 self.request = requestview返回的as_view()函数中设置self.request。我查看了历史记录,但只找到设置android:background="@android:color/white"然后立即将请求传递给视图函数。