Difference between self.request and request in Django class

In django, to represent a class such as ListView and DetailView , methods such as get() or post() or other functions defined by developer options include self and request . I found out that in self this is actually a self.request field, so what's the difference between self.request and request ?

Example: this is a function in a class-based view and is used to process user requirements:

 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')) 

This is the function used to process the user register:

 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')) 

In the first function, he used the data stored in request , and in the second - self.request , both work functionally. Who cares?

Thank you for your responses.

+5
source share
1 answer

For a subclass of View they are the same object. self.request = request set in the View function returned by as_view() . I looked at the history, but found only the self.request installation, and then immediately passed the request to the view function.

+2
source

All Articles