The reason, why you don't have the csrf token available in process_request, is that token is set in process_view
of the csrf middleware, which is run after each middleware's process_request
, so you need to move your code into process_view
instead:
def process_view(self, request, view_func, view_args, view_kwargs):
if some_clause:
return render(request, 'foo.html', {'foo': 'bar'})
return view_func(request, view_args, view_kwargs)