How it works...

The ThreadLocalMiddleware processes each request and stores the current HttpRequest object in the current thread. Each request–response cycle in Django is single threaded. We have created two functions: get_current_request() and get_current_user(). These functions can be used from anywhere to grab the current HttpRequest object or the current user, respectively.

For example, you can use this middleware to develop and use CreatorMixin, which will save the current user as the creator of a new model object, as follows:

# myproject/apps/core/models.py
from
django.conf import settings
from django.db import models
from django.utils.translation import gettext_lazy as _


class CreatorBase(models.Model):
"""
Abstract base class with a creator
"""

creator = models.ForeignKey(
settings.AUTH_USER_MODEL,
verbose_name=_("creator"),
editable=False,
blank=True,
null=True,
on_delete=models.SET_NULL,
)

class Meta:
abstract = True

def save(self, *args, **kwargs):
from .middleware import get_current_user

if not self.creator:
self.creator = get_current_user()
super().save(*args, **kwargs)

save.alters_data = True
..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset
3.128.94.171