2017-12-16 22 views
0

私はdjango restフレームワークを初めて利用しています。私は、各ユーザーに対応するトークンを取得するAPIを持っています。トークンにアクセスするために定義された方法は"メソッド" POST "は許可されていません。 Dano REST

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." 
} 

としての応答を取得しています私は間違っていた?

答えて

1

まず、django-rest-authタグを使用しています。あなたは実際に休みの認証を使用していますか?もしそうでなければ、それは箱からすぐに大量の認証機能を提供するので、あなたは間違いなくそれを検討するべきです。

ご質問のとおり、as_view()ObtainAuthTokenにお電話することを忘れました。そのように変更し、それが動作するかどうか教えてください:

url(r'^login/$', ObtainAuthToken.as_view(), name='login') 
0

コードに間違った識別があります。 postメソッドは、ObtainAuthToken(APIView)クラスの内部にある必要があります。今はスタンドアロンの関数として定義されています。

関連する問題