gpt4 book ai didi

python - "detail": "Method\"GET\"not allowed. 在 django 中调用端点

转载 作者:行者123 更新时间:2023-12-02 07:04:07 25 4
gpt4 key购买 nike

我正在使用 django.rest_framework。我有一个特定 View 的 get_or_create 方法,

class LocationView(views.APIView):
def get_or_create(self, request):
try:
location = Location.objects.get(country=request.data.get("country"), city=request.data.get("city"))
Response(location, status=status.HTTP_200_OK)
except Location.DoesNotExist:
serializer = LocationSerializer(data=request.data)
if serializer.is_valid():
serializer.save()
return Response(serializer.data, status=status.HTTP_201_CREATED)
else:
Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)

这是位置模型,

class Location(models.Model):
country = models.CharField(max_length=255)
city = models.CharField(max_length=255, unique=True)
latitude = models.CharField(max_length=255)
longitude = models.CharField(max_length=255)

class Meta:
unique_together = ('country', 'city')

这是我的网址,

url(r'^location/$', LocationView.as_view(), name='location'),

当我通过以下方式调用此端点时, http://127.0.0.1:8000/api/v1/bouncer/location/?country=USA&&city=Sunnyvale&&latitude=122.0363&&longitude=37.3688

这就是我得到的,

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

我在这里缺少什么。

最佳答案

Method not allowed 错误是因为它在 API 类中搜索 get() 方法,但找不到。
API类的一般格式如下

class LocationView(views.APIView):
def get(self, request):
#do something with 'GET' method
return Response("some data")

def post(self, request):
#do something with 'POST' method
return Response("some data")


如果您想在某个时刻调用 get_or_create() 方法,您可以像任何其他方法一样执行此操作,

class LocationView(views.APIView):
def get_or_create(self, request):
# do some "get or create" stuff
return "some data"

def get(self, request):
if condition:
self.get_or_create(request)
# do some stuff
return Response(" some special data related to get or create")
return Response("some data")

关于python - "detail": "Method\"GET\"not allowed. 在 django 中调用端点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49268734/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com