我如何在django视图函数之外访问当前会话数据?

68de4m5k  于 2023-01-21  发布在  Go
关注(0)|答案(1)|浏览(128)

我正在使用SessionStore对象来存储会话数据,如果不使用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

我怎样才能做到这一点???

xv8emn3q

xv8emn3q1#

您可以在序列化程序中访问请求,因为泛型视图通过上下文将请求传递给序列化程序:

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

您可以访问它,因为TokenObtainPairView派生自GenericAPIView

相关问题