Как загрузить фотографию с помощью Ajax в Django? Python

Я пытаюсь загрузить фотографию профиля с помощью Ajax (используя FormData) в Django.

Ниже приведен код, который я использовал в html странице,

<img src="/media/{{user_profile.picture}}" width="150" height="150" alt="" id="pro_file"/>
<input id="upload-file" type="file" name="file"/>

и в jQuery (Ajax),

var fd = new FormData();
var vidFileLength = $('#upload-file')[0].files.length;
if(vidFileLength === 0){
    var files = $('#pro_file').attr('src');
}
else{
    var files = $('#upload-file')[0].files[0];
}
fd.append('file',files);

Затем я отправил fd в атрибуте data в Ajax.

Однако, в файле views.py ниже приведен мой фрагмент кода,

fd = request.FILES
try:
    profile_pic = fd['file']
except KeyError as e:
    profile_pic = request.POST['file']
profile_pic = str(profile_pic).replace("/media/","")

Используя этот метод, мой код работает, но я сомневаюсь, правильный ли это способ сделать это? Есть предложения, пожалуйста?

Если у пользователя уже есть изображение, и он не выбирает новое изображение через вход, есть ли смысл посылать URL обратно на сервер? Сервер может найти его в базе данных, если ему это действительно нужно. А если это обновление профиля, то вам не нужно ничего делать и можно игнорировать отсутствие обратной отправки.

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