2017-03-15 4 views
0

Ich habe die folgende Funktion (Importe nur aus Gründen der Vollständigkeit zeigt):DRF - Lassen Sie sich nicht erlaubt

from django.utils import timezone 
from rest_framework import status 
from rest_framework.response import Response 
from rest_framework.authtoken.models import Token 
from rest_framework.authtoken.views import ObtainAuthToken 


class RefreshAuthToken(ObtainAuthToken): 
    def post(self, request): 
     key = request.query_params.get('auth_token').strip() 
     try: 
      token = self.model.objects.get(key=key) 
      token.delete() 
      token = Token.objects.create(user=serializer.object['user']) 
      token.created = datetime.datetime.utcnow().replace(tzinfo=utc) 
      token.save() 
      return Response({'token': token.key}) 
     except self.model.DoesNotExist: 
      return Response("Error", status=status.HTTP_400_BAD_REQUEST) 

Wenn ich besuchen Sie die URL mit/auth_token = 619f853ac32e171facb3068c990c6eded81a59c9, bekomme ich eine Fehlermeldung:

?
{"detail":"Method \"GET\" not allowed."} 

Wie kann ich das lösen?

Dank

+0

müssen Sie den vorhandenen Token-Schlüssel setzen, nicht blablabla – UserGraund

+0

Ich habe einen vorhandenen Schlüssel. – TruniTr

+0

und dieser Schlüsselwert ist blablabla? – UserGraund

Antwort

1

Sie sollten per POST anfordern oder die Funktionsnamen zu erhalten ändern.

+0

Ist das richtig? Ich ändere Informationen, also ist es eine Postanfrage. – TruniTr

+0

Ja, es gibt nur eine Methode namens post, also kann es nur Post-Anfrage behandeln. Wenn Sie über GET oder PUT oder andere Methoden anfordern möchten, sollten Sie eine Methode namens get oder put hinzufügen. – Guinner

Verwandte Themen