I try to understand Signals in Django. I am creating project for DRF.
from django.dispatch import receiver
from django.contrib.auth.signals import user_logged_in
from django.core.signals import request_finished
For this Signal I can catch user
@receiver(user_logged_in)
def last_user_login(sender, request, user, **kwargs):
print('User **{}** logged in'.format(user))
And I want to catch user for this signal, but it's impossible as I understood.
@receiver(request_finished)
def last_user_request(sender, **kwargs):
print('User made request')
My target: catch last user request and write this data to db.
Could someone help me? Thanks.
write a custom middleware to achieve this:
middleware.py:
class SimpleMiddleware:
def __init__(self, get_response):
self.get_response = get_response
# One-time configuration and initialization.
def __call__(self, request):
# Code to be executed for each request before
# the view (and later middleware) are called.
response = self.get_response(request)
print(response.status_code)
print(request.user.username)
# Add user data in db....
if request.method == 'POST':
print(request.POST)
# Code to be executed for each request/response after
# the view is called.
return response
settings.py:
MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
'myproject.middleware.SimpleMiddleware',
]