Я пытаюсь сделать функцию загрузки изображений через ajax. Я проверил все, и все еще Django возвращает form.is_valid (), чтобы быть False, и я до сих пор не могу выяснить любую возможную ошибку в этом.form.is_valid () возвращает False.Здесь я делюсь своими views.py и html, а также кодом ajax
def upload_profile_picture(request):
data={}
uploadform=update_profile_photo(request.POST,request.FILES)
if uploadform.is_valid():
image=request.FILES['profile_picture']
if image:
userID=request.POST['vuserID']
usr=User.objects.get(pk=userID)
if usr.id == request.user.id:
usr.profile.profile_picture=image
usr.profile.save()
data['success']=True
else:
data['error_message']='you are not an authorized user'
print('you are not an authorized user for uploading this photo')
else:
data['error_message']='image not supplied'
print('image is not supplied in the form')
else:
data['error_message']='profile photo upload form is not valid'
print('this form is not valid')
return JsonResponse(data)
Вот мой код ajax, который отправляет данные формы в views.py Вот код ajax:
<script>
$(document).ready(function () {
$('#upload_profile_picture').submit(function (e) {
e.preventDefault();
alert(" i am uploading profile_picture");
var form = $(this);
var formData = new FormData(this);
var user_id=$(this).attr('data-user-id');
//var postDescription = $('#post-form-description').val().trim();
var image = $('.upload_profile_photo').val().trim();
//console.log(postDescription);
console.log(image);
if(!image){
alert('cannot submit empty forms!');
return false;
}
$.ajax({
type: 'POST',
url: "{% url 'account:upload_profile_picture' %}",
data: formData ,
success: function (data) {
if(data.success){
location.reload();
}
},
cache: false,
contentType: false,
processData: false
});
});
});
и ниже приведен фрагмент из файла html: - profile.html
form method='post' action='' id="upload_profile_picture" enctype="multipart/form-data">
Select file : input type='file' name='profile_picture' id='fileo' class='form-control upload_profile_photo' /><br>
input type="hidden" name="csrfmiddlewaretoken" value="{{csrf_token}}" />
input type="hidden" name="vuserID" value="{{vuser.id}}" />
input type='submit' data-user-id="{{vuser.id}}" class='btn btn-info' value='Upload' id='upload' style="background-color: rgb(244,107,61);margin-left: 20vw;">
/form>