Как я могу получить доступ к данным текущей сессии вне функции представления django?

Я использую объект SessionStore для хранения данных сессии, как я могу получить текущие данные сессии из таблицы Session без использования pk, поскольку мы не знаем pk записи, хранящейся в таблице.

Вот код

ldap.py

from django.contrib.sessions.backends.db import SessionStore
s = SessionStore()

class LDAPPBackend(ModelBackend):
    def authenticate(self, *args, **kwargs):
        **s['memberOf']** = "Star Group" #**setting session**
        s.create()

serializer.py

from rest_framework import serializers
from rest_framework_simplejwt.serializers import TokenObtainPairSerializer
from django.contrib.sessions.models import Session
**s = Session.objects.get(pk="")** #**how can i know current logged in user session pk???**
class TokenObtainPairPatchedSerializer(TokenObtainPairSerializer):
    def validate(self, attrs):
        data['attr'] = attrs
        **data['memberOf'] = s** # **How can i get current session data here??**
        return data

Как я могу этого добиться???

Вы можете получить доступ к запросу в сериализаторе, потому что общее представление передает запрос в сериализатор через context:

class TokenObtainPairPatchedSerializer(TokenObtainPairSerializer):
    def validate(self, attrs):
        data['attr'] = attrs
        session = self.context.get('request').session 
        # rest of the code
        return data

Вы можете получить к нему доступ, потому что TokenObtainPairView является производным от GenericAPIView.

Вернуться на верх