Сеанс запроса ApiClient DRF

#django #django-rest-framework

#django #django-rest-framework

Вопрос:

Мне нужно поместить токен в request.session, а затем получить его из моего кода

 request.session.get('id_token')
 

Как это сделать с помощью drf APIClient() ? Я пробовал это

     self.client = APIClient()
    self.client.session['id_token'] = 'some key'
 

но это не работает

Ответ №1:

Идентификаторы сеанса создаются при аутентификации и отправляются клиенту. Затем клиент может отправлять их при последующих запросах как часть заголовка

ApiClient DRF наследует класс клиента Django, поэтому вы можете инициализировать его с помощью заголовков

 apc = APIClient(SESSION_ID='ljw3r23j-slzljsdf')
 

А затем в вашем бэкэнд-коде, где у вас есть доступ к вашему запросу, вы можете получить к нему доступ через любой .headers or .META из атрибутов. Это будет зависеть от вашей версии Django

Django 2.2

 session = requests.headers.get('SESSION_ID')
 

< Django 2.2

 session = request.META.get('SESSION_ID')