0

I want to run a function before any view in my app is loaded, so I wrote my own middleware. It is in a file called "DoBeforeMiddleWare.py" located in the folder "my_app_name" and, for now, looks like

class DoBeforeMiddleWare:
    def process_request(self, request):
        return None
    def process_view(self, request, view_func, view_args, view_kwargs):
        return None

I try to place this function in my list of middleware in settings.py:

MIDDLEWARE_CLASSES = (
    'django.middleware.common.CommonMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'my_project_name.my_app_name.DoBeforeMiddleWare',
)

However, my app never loads after I restart passenger. Why? My app loads if I comment out the last line of |MIDDLEWARE_CLASSES|.

dangerChihuahua007
  • 20,299
  • 35
  • 117
  • 206

1 Answers1

1

process_request and process_view must return None or an HttpResponse object (reference). If you want a no-op middleware, you should change them to return None, as follows:

class DoBeforeMiddleWare:
    def process_request(self, request):
        return None
    def process_view(self, request, view_func, view_args, view_kwargs)
        return None
cberner
  • 3,000
  • 3
  • 22
  • 34