Тривиальное решение этой проблемы состоит в том, чтобы ваш веб-сервер различал вызовы API и обычные вызовы, а затем имел два разных экземпляра WSGI вашего приложения: один с включенными сеансами, другой с отключенными сеансами.(Вероятно, это гораздо проще с Nginx, чем с Apache.)
Альтернативой является наследование SessionMiddleware и последующее редактирование функций процесса, чтобы игнорировать все запросы, соответствующие вашим критериям.Что-то вроде:
from django.contrib.sessions.middleware import SessionMiddleware
class MySessionMiddleware(SessionMiddleware):
def process_request(self, request):
if request.path_info[0:5] == '/api/':
return
super(MySessionMiddleware, self).process_request(request)
def process_response(self, request, response):
if request.path_info[0:5] == '/api/':
return response
return super(MySessionMiddleware, self).process_response(request, response)
И затем отредактируйте файл настроек так, чтобы MIDDLEWARE_CLASSES содержал путь к «MySessionMiddleware», а не «django.contrib.sessions.middleware.SessionMiddleware».