«Ошибка: объект« InMemoryUploadedFile »не имеет атрибута« split »» - PullRequest
0 голосов
/ 26 декабря 2018

Я пытаюсь создать API с помощью Django и тестировать его с помощью POSTMAN.

При попытке протестировать API с помощью приведенного ниже кода я получаю сообщение об ошибке

@api_view(['POST','GET'])
def predict_plant_disease(request):
    try:
      if request.body:
        request_data = request.data["plant_image"]
        image_data = request_data.split(';base64,')
        image_array,err_msg =image_converter.convert_image(request_data)
           if err_msg == None :
                model_file = f"{BASE_DIR}/ml_files/cnn_model.pkl"
                saved_classifier_model = pickle.load(open(model_file,'rb'))
                prediction = saved_classifier_model.predict(image_array) 
                label_binarizer = pickle.load(open(f"{BASE_DIR}/ml_files/label_transform.pkl",'rb'))
                return_data = {
                    "error" : "0",
                    "data" : f"{label_binarizer.inverse_transform(prediction)[0]}"
                }
           else :
                return_data = {
                    "error" : "4",
                    "message" : f"Error : {err_msg}"
                }
       else :
            return_data = {
                "error" : "1",
                "message" : "Request Body is empty",
            }
     except Exception as e:
            return_data = {
                  "error" : "3",
                  "message" : f"Error : {str(e)}",
            }
return HttpResponse(json.dumps(return_data), content_type='application/json; charset=utf-8')

Я получаюошибка, поскольку у объекта 'InMemoryUploadedFile' нет атрибута 'split' ' во второй строке внешнего цикла if. Помогите мне решить эту ошибку.

введите описание изображения здесь

Снимок экрана, показывающий ошибку при запросе результата из API POSTMAN.

1 Ответ

0 голосов
/ 27 декабря 2018

Из снимка экрана видно, что вы вводите данные в виде файла, тогда как в коде изображение принимается в виде закодированной формы base64.

Дайте ввод в виде закодированной формы base64 изображения.Эту кодировку можно сделать онлайн, используя любой веб-сайт кодирования.https://www.base64 -image.de /

...