2017-03-15 62 views
0

我有以下功能(只显示为完整起见进口):DRF - 获取不允许

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) 

当我访问的URL以/ AUTH_TOKEN = 619f853ac32e171facb3068c990c6eded81a59c9,我得到一个错误:

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

我该如何解决这个问题?

谢谢

+0

你需要设置已存在的令牌密钥,而不是blablabla – UserGraund

+0

我有一个现有的密钥。 – TruniTr

+0

这个关键值是blablabla? – UserGraund

回答

1

您应该通过POST请求或更改函数名来获取。

+0

这是一件正确的事情吗?我正在修改信息,所以这是一个发布请求。 – TruniTr

+0

是的,只有一个名为post的方法,所以它只能处理post请求。如果你想通过GET或PUT或其他方法请求,你应该添加一个名为get或put的方法。 – Guinner