我是Django Rest框架的新手。我有一个API可以为每个用户获得相应的令牌。定义要访问令牌的方法是
class ObtainAuthToken(APIView):
def post(self, request):
user = authenticate(
username=request.data['username'], password=request.data['password'])
if user:
token, created = Token.objects.get_or_create(user=user)
return Response({'token': token.key, 'user': UserSerializer(user).data})
return Response('Invalid username or password', status=status.HTTP_400_BAD_REQUEST)
和在urls.py中我有
url(r'^login/$',ObtainAuthToken, name='login')
但是,在登录用户时,我将响应作为
{
"detail": "Method "POST" not allowed."
}
我在哪里错了?
首先 - 我看到您使用了django-rest-auth
标签。您实际上正在使用REST AUTH吗?如果不是 - 您绝对应该考虑这样做,因为它可以开箱即用。
关于您的问题,您忘了在URL conf中的ObtainAuthToken
上致电as_view()
。像这样更改它,并告诉我它是否有效:
url(r'^login/$', ObtainAuthToken.as_view(), name='login')
您的代码中的凹痕错误。帖子方法需要在ObtainAuthToken(APIView)
类内部。现在定义为独立函数。