Как загрузить изображение/медиафайл из React в Django API?

Я могу сохранить данные без поля изображения. Я новичок, поэтому не очень хорошо разбираюсь в подобных проблемах. В чем проблема с полем изображения? Это не показывает мне никакой ошибки, просто мои данные изображения не сохраняются. Я делюсь всем своим кодом, это будет действительно полезно, если вы, ребята, поможете мне.

#models.py

class Test(models.Model):
    full_name = models.TextField(max_length=200, blank=True, null=True)
    image =  models.ImageField(null=True, blank=True)
    address = models.TextField(max_length=200, blank=True, null=True)

    def __str__(self):
        return str(self.id)

#views.py

@api_view(['POST'])
def add(request):
    data = request.data
    test = Test.objects.create(
            full_name = data['full_name'],
            address = data['address'],
        )
    serializer = TestSerializer(test, many=False)
    return Response(serializer.data)

#это экран для страницы реакции

import React from 'react';
class Test extends React.Component{
    constructor(){
        super();
        this.state={
            full_name:'',
            image: '',
            address:''
            
        }
        this.changeHandler=this.changeHandler.bind(this);
        this.submitForm=this.submitForm.bind(this);
    }

    // Input Change Handler
    changeHandler(event){
        this.setState({
            [event.target.name]:event.target.value
        });
    }

    // Submit Form
    submitForm(){
        fetch('http://127.0.0.1:8000/api/orders/test',{
            method:'POST',
            body:JSON.stringify(this.state),
            headers:{
                'Content-type': 'application/json; charset=UTF-8',
            },
        })
        .then(response=>response.json())
        .then((data)=>console.log(data));

        this.setState({
            full_name:'',
            image: '',
            address:''
            
        });
    }

    render(){
        return (
            <table className="table table-bordered">
                <tbody>
                    <tr>
                        <th>Full Name</th>
                        <td>
                            <input value={this.state.full_name} name="full_name" onChange={this.changeHandler} type="text" className="form-control" />
                        </td>
                    </tr>

                    <tr>
                        <th>Voucher</th>
                        <td>
                            <input value={this.state.image} name="image" onChange={this.changeHandler} type="file" className="form-control" />
                        </td>
                    </tr>
                    
                    <tr>
                        <th>Address</th>
                        <td>
                            <input value={this.state.address} name="address" onChange={this.changeHandler} type="text" className="form-control" />
                        </td>
                    </tr>
                    <tr>
                        <td colSpan="2">
                            <input type="submit" onClick={this.submitForm} className="btn btn-dark" />
                        </td>
                    </tr>
                </tbody>
            </table>
        );
    }
}

export default Test;

Любезно удалите null=True, blank=True из модели Test в представленном изображении.

Вернуться на верх