在 Postman 中提交时,Django Rest Framework 不显示正确的错误
Django Rest Framework does not show the proper error when submitting in Postman
我有以下代码:
@api_view(['GET'])
def selected_device(request,pk=None):
if pk != None:
try:
devices = Device.objects.filter(pk=pk)
except Device.DoesNotExist:
return Response(status=status.HTTP_400_BAD_REQUEST)
try:
devicedetail = DeviceDetail.objects.filter(DD2DKEY=pk)
except DeviceDetail.DoesNotExist:
return Response(status=status.HTTP_400_BAD_REQUEST)
devserializer = DeviceSerializers(devices, many=True)
devdserializer = DeviceDetailSerializers(devicedetail, many=True)
results = {
"device":devserializer.data,
"device_details" : devdserializer.data,
}
return Response(results)
如代码中所述,有try和except来尝试获取数据。当我设置 pk=210
时,此数据不存在于 table 中。它不显示 400 的状态。相反,它在邮递员中显示 [],里面什么也没有。我怎样才能解决这个问题?
您可以使用 exists()
方法,
@api_view(['GET'])
def selected_device(request, pk=None):
if not pk:
return Response({"detail": "'pk' is empty"}, status=400)
devices = Device.objects.filter(pk=pk)
devicedetail = DeviceDetail.objects.filter(DD2DKEY=pk)
if devices.exists() and devicedetail.exists():
devserializer = DeviceSerializers(devices, many=True)
devdserializer = DeviceDetailSerializers(devicedetail, many=True)
results = {
"device": devserializer.data,
"device_details": devdserializer.data,
}
return Response(results)
return Response(status=400)
我有以下代码:
@api_view(['GET'])
def selected_device(request,pk=None):
if pk != None:
try:
devices = Device.objects.filter(pk=pk)
except Device.DoesNotExist:
return Response(status=status.HTTP_400_BAD_REQUEST)
try:
devicedetail = DeviceDetail.objects.filter(DD2DKEY=pk)
except DeviceDetail.DoesNotExist:
return Response(status=status.HTTP_400_BAD_REQUEST)
devserializer = DeviceSerializers(devices, many=True)
devdserializer = DeviceDetailSerializers(devicedetail, many=True)
results = {
"device":devserializer.data,
"device_details" : devdserializer.data,
}
return Response(results)
如代码中所述,有try和except来尝试获取数据。当我设置 pk=210
时,此数据不存在于 table 中。它不显示 400 的状态。相反,它在邮递员中显示 [],里面什么也没有。我怎样才能解决这个问题?
您可以使用 exists()
方法,
@api_view(['GET'])
def selected_device(request, pk=None):
if not pk:
return Response({"detail": "'pk' is empty"}, status=400)
devices = Device.objects.filter(pk=pk)
devicedetail = DeviceDetail.objects.filter(DD2DKEY=pk)
if devices.exists() and devicedetail.exists():
devserializer = DeviceSerializers(devices, many=True)
devdserializer = DeviceDetailSerializers(devicedetail, many=True)
results = {
"device": devserializer.data,
"device_details": devdserializer.data,
}
return Response(results)
return Response(status=400)