2017-09-21 7 views
0

Je suis en train de créer un register et sign in API (TokenAuthentication) en utilisant DRF.DRF: "detail": "Méthode " GET "non autorisé."

Ceci est mon views.py

from rest_framework import status 
from rest_framework.views import APIView 
from rest_framework.response import Response 
from rest_framework.permissions import AllowAny 

from .serializers import AccountSerializer 
from .models import Account 

class AuthRegister(APIView): 
    """ 
    Register a new user. 
    """ 
    serializer_class = AccountSerializer 
    permission_classes = (AllowAny,) 

    def get(self, request, format=None): 
     allquery = Account.objects.all() 
     serializer = AccountSerializer(allquery, many=True) 
     return Response(serializer.data) 

    def post(self, request, format=None): 
     serializer = self.serializer_class(data=request.data) 
     if serializer.is_valid(): 
      serializer.save() 
      return Response(serializer.data, 
        status=status.HTTP_201_CREATED) 
     return Response(serializer.errors, 
     status=status.HTTP_400_BAD_REQUEST) 

class AuthLogin(APIView): 
    ''' Manual implementation of login method ''' 

    def get(self, request, format=None): 
     allquery = Account.objects.all() 
     serializer = AccountSerializer(allquery, many=True) 
     return Response(serializer.data) 

    def post(self, request, format=None): 
     data = request.data 
     email = data.get('email', None) 
     password = data.get('password', None) 

     account = authenticate(email=email, password=password) 
     # Generate token and add it to the response object 
     if account is not None: 
      login(request, account) 
      return Response({ 
       'status': 'Successful', 
       'message': 'You have successfully been logged into your account.' 
      }, status=status.HTTP_200_OK) 

     return Response({ 
      'status': 'Unauthorized', 
      'message': 'Username/password combination invalid.' 
     }, status=status.HTTP_401_UNAUTHORIZED) 

C'est urls.py

from django.conf.urls import url 
from .views import AuthRegister 
from rest_framework_jwt.views import obtain_jwt_token, refresh_jwt_token, verify_jwt_token 

urlpatterns = [ 
    url(r'^login/', obtain_jwt_token), 
    url(r'^token-refresh/', refresh_jwt_token), 
    url(r'^token-verify/', verify_jwt_token), 
    url(r'^register/$', AuthRegister.as_view()), 
] 

Quand je lance le serveur je reçois l'erreur suivante.

enter image description here

Après avoir déposé les détails de l'utilisateur est ajouté à la base de données, mais quand je tr connecter erreur se produit.

"Unable to log in with provided credentials."

Pas en mesure de comprendre l'erreur. S'il vous plaît, n'importe qui aide!

Répondre

1

Vous ne l'avez pas mis en œuvre une méthode get dans votre vue AuthRegister. DRF ne sait pas comment répondre pour obtenir des demandes pour cette vue, donc il suppose que vous ne voulez pas autoriser une telle catégorie de demandes.

Vous devriez mettre en œuvre une méthode get qui met en œuvre les mesures à prendre (votre réponse du serveur) pour les requêtes GET.

+0

Que devrais-je retourner dans 'get()'? –

+0

données de votre sérialiseur etc. http://www.django-rest-framework.org/tutorial/3-class-based-views/#rewriting-our-api-using-class-based-views –

+0

Qu'en est-il ' AuthLogin', j'ai implémenté le même 'get()' dedans cela donnerait l'erreur –