Django и React : [ErrorDetail(string='Отправленные данные не были файлом. Проверьте тип кодировки в форме.', code='invalid')].
Я добавил тип шифрования для формы 'multipart/form-data' то же самое в вызове axios, но я все еще получаю ту же ошибку.
У меня есть такая модель:
class MyModel(models.Model):
img = models.ImageField(upload_to='media',blank=False)
в файле views.py:
class MyModelView(viewset.ModelViewSet):
serializer_class = serializer.MyModelSerializer
def post(self,request):
data = serializer.MyModelSerializer(data=request.data)
print(data.is_valid()) # this is false, means there is an error
print(data.errors) #This one will display the error shown in the title of this question
if data.is_valid():
img = data.data['img']
return Response('Success')
return Response('Fail')
в serializer.py:
class MyModelSerializer(serializers.ModelSerializer):
class Meta:
model = MyModel
fields = '__all__'
на стороне фронтенда (React)
function ImgComp(){
let [img,setImg] = useState({'image':''}
let {image} = img
function handleChange(e){
setImg(
{
...img,[e.target.name]:e.target.value
}
)
}
function submitForm(e){
e.preventDefault()
axios.post('127.0.0.1:8000/mymodelurl/',img,{withCredentials:true,headers:{'Content-Type':'multipart/form-data'}})
return(
<div>
<form method='post' encType='multipart/form-data' onSubmit = {(e)=>submitForm(e)}>
<input type='file' value={image} name='img' onChange={(e)=>handleChange(e)}/>
</form>
</div>
}
}
если я отлаживаю изображение, то получаю что-то вроде :
C:\\fakepath\\img.png
любая помощь будет принята с благодарностью.