forked from 00dani/lemoncurry
Introduce a middleware that allows for HttpResponses to be thrown from inner utility functions, to avoid boilerplate in views
This commit is contained in:
parent
1d4be082cf
commit
7d17a92793
4 changed files with 22 additions and 9 deletions
14
lemoncurry/middleware.py
Normal file
14
lemoncurry/middleware.py
Normal file
|
@ -0,0 +1,14 @@
|
|||
from django.http import HttpRequest, HttpResponse
|
||||
from django.utils.deprecation import MiddlewareMixin
|
||||
|
||||
|
||||
class ResponseException(Exception):
|
||||
def __init__(self, response: HttpResponse) -> None:
|
||||
self.response = response
|
||||
|
||||
|
||||
class ResponseExceptionMiddleware(MiddlewareMixin):
|
||||
def process_exception(self, request: HttpRequest, exception: Exception) -> HttpResponse:
|
||||
if isinstance(exception, ResponseException):
|
||||
return exception.response
|
||||
raise exception
|
|
@ -118,6 +118,7 @@ MIDDLEWARE = [
|
|||
'django.contrib.messages.middleware.MessageMiddleware',
|
||||
'django.contrib.sites.middleware.CurrentSiteMiddleware',
|
||||
'django.middleware.clickjacking.XFrameOptionsMiddleware',
|
||||
'lemoncurry.middleware.ResponseExceptionMiddleware',
|
||||
]
|
||||
|
||||
ROOT_URLCONF = 'lemoncurry.urls'
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue