Плохой запрос в django при отправке сообщения с помощью flutter

Я пытаюсь сделать пост-запрос с изображением и текстом. Я следовал видео, но конечная точка, используемая с fakeapi, работает нормально с flutter. Мой api работает нормально с postman, но при выполнении с flutter он показывает плохой запрос. Помогите мне!!!

Model.py

class TestImageUpload(models.Model): image = models.ImageField(upload_to = "products/",blank=True, null=True)

Serializer.py

class TestImage(serializers.ModelSerializer):
    class Meta:
        model = TestImageUpload
        fields = "__all__"

Views.py

class TestImageView(ListCreateAPIView):
    try:
        serializer_class = TestImage

        def perform_create(self, serializer):
            serializer.save()
            response_msg = {'error': False}
            return Response(response_msg)       
    except:
        response_msg = {'error': True} 

urls.py

path('addimage/', TestImageView.as_view(),name= 'add_image_view'),

Код флаттера

class UploadImageScreen extends StatefulWidget {
  static const routeName = '/image-upload';
  const UploadImageScreen({Key? key}) : super(key: key);

  @override
  State<UploadImageScreen> createState() => _UploadImageScreenState();
}

class _UploadImageScreenState extends State<UploadImageScreen> {
  File? image;
  final _picker = ImagePicker();
  bool showSpinner = false;

  Future getImage() async {
    final pickedFile =
        await _picker.pickImage(source: ImageSource.gallery, imageQuality: 80);
    if (pickedFile != null) {
      image = File(pickedFile.path);
      setState(() {});
    } else {
      print("no image selected");
    }
  }

  Future<void> uploadImage() async {
    setState(() {
      showSpinner = true;
    });
    var stream = http.ByteStream(image!.openRead());
    stream.cast();

    var length = await image!.length();

    var uri = Uri.parse('http://10.0.2.2:8000/api/addimage/');

    var request = http.MultipartRequest('POST', uri);

    // request.fields['title'] = "Static Tile";

    var multiport = http.MultipartFile('image', stream, length);
    request.files.add(multiport);
    var response = await request.send();
    print(response.stream.toString());
    if (response.statusCode == 200) {
      setState(() {
        showSpinner = false;
      });
      print("Image uploaded");
    } else {
      setState(() {
        showSpinner = false;
      });
      print("Image uploade fail");
    }

    // print(e);
  }

  @override
  Widget build(BuildContext context) {
    return ModalProgressHUD(
      inAsyncCall: showSpinner,
      child: Scaffold(
        appBar: AppBar(title: Text("Upload Image")),
        body: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          crossAxisAlignment: CrossAxisAlignment.center,
          children: [
            InkWell(
              onTap: () => getImage(),
              child: Container(
                child: image == null
                    ? const Center(
                        child: Text('Pick Image'),
                      )
                    : Container(
                        child: Center(
                          child: Image.file(File(image!.path).absolute,
                              height: 200, width: 200, fit: BoxFit.cover),
                        ),
                      ),
              ),
            ),
            const SizedBox(
              height: 150,
            ),
            InkWell(
              onTap: () {
                uploadImage();
              },
              child: Container(
                height: 50,
                width: 200,
                color: Colors.green,
                child: Center(child: Text("Upload")),
              ),
            ),
          ],
        ),
      ),
    );
  }
}
Вернуться на верх