Skip to main content
 首页 » 编程设计

python之如何在 Django REST 框架中获取用户

2024年09月07日37exmyth

我正在使用 Django REST 框架,我正试图在我的一个基于类的 View 中让用户像这样:

class ListPDF(PDFTemplateView): 
    """ 
    Return a PDF  
    """ 
    permission_classes = (IsAuthenticated,) 
    template_name = 'pdf.html' 
 
    def get_context_data(self, **kwargs): 
        user = User.objects.get(id=self.request.user.id) 

但出于某种原因,我不断收到错误消息User matching query does not exist。我正在使用 rest_framework.authtoken 进行身份验证。

我已经调查过,当我没有通过管理部分登录时,即使用户 token 随请求一起发送,用户也是匿名的。如何获取此 View 中的用户对象?

**更新

我找到了 this answer :

from rest_framework.authtoken.models import Token 
user = Token.objects.get(key='token string').user 

但是有没有更简单的方法来获取用户呢?

请您参考如下方法:

确保您已将 TokenAuthentication 添加到 DEFAULT_AUTHENTICATION_CLASSES:

# settings.py: 
 
INSTALLED_APPS = [ 
    ... 
    'rest_framework', 
    'rest_framework.authtoken', 
    ... 
] 
 
REST_FRAMEWORK = { 
    ... 
    'DEFAULT_AUTHENTICATION_CLASSES': [ 
        'rest_framework.authentication.TokenAuthentication', 
    ], 
    ... 
} 

文档:http://www.django-rest-framework.org/api-guide/authentication/#tokenauthentication


编辑:我注意到您正在子类化 PDFTemplateView。你自己写的吗?是继承自DRF的APIView吗?