Skip to content

Instantly share code, notes, and snippets.

@minlaxz
Forked from rbtsolis/middleware.py
Created October 7, 2022 08:01
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save minlaxz/bc8c761f31d21ca9564cf5675888eec1 to your computer and use it in GitHub Desktop.
Save minlaxz/bc8c761f31d21ca9564cf5675888eec1 to your computer and use it in GitHub Desktop.
Django Access the Request or User Object Inside the Models and Signals
# 1) Create a middlewares/middlewares.py file and copy this:
import threading
class RequestMiddleware:
def __init__(self, get_response, thread_local=threading.local()):
self.get_response = get_response
self.thread_local = thread_local
# One-time configuration and initialization.
def __call__(self, request):
# Code to be executed for each request before
# the view (and later middleware) are called.
self.thread_local.current_request = request
response = self.get_response(request)
# Code to be executed for each request/response after
# the view is called.
return response
#Include Middleware in your settings.py file
MIDDLEWARE = [
'middlewares.middlewares.RequestMiddleware',
]
# models.py or signals.py file
from middlewares.middlewares import RequestMiddleware
# First we need create an instance of that and later get the current_request assigned
request = RequestMiddleware(get_response=None)
request = request.thread_local.current_request
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment