Ответ 1
Тривиальное решение заключается в том, чтобы ваш веб-сервер различал вызовы 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".