如何在 Django REST 框架中获取用户?
How to get user in Django REST framework?
我正在使用 Django REST 框架,我正试图在我基于 class 的视图之一中吸引这样的用户:
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
进行身份验证。
我已经调查过,当我没有通过管理部分登录时,即使用户令牌随请求一起发送,用户也是匿名的。如何在此视图中获取用户对象?
**更新
我发现 :
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
吗?
我正在使用 Django REST 框架,我正试图在我基于 class 的视图之一中吸引这样的用户:
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
进行身份验证。
我已经调查过,当我没有通过管理部分登录时,即使用户令牌随请求一起发送,用户也是匿名的。如何在此视图中获取用户对象?
**更新
我发现
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
吗?