如何在 Django 中使用 Ajax 上传图片? Python
How to upload picture using Ajax in Django ? Python
我正在尝试在 Django 中使用 Ajax(使用 FormData)上传个人资料图片。
以下是我在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);
然后我在 Ajax.
的数据属性中发送了 fd
然而,在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 发送回服务器?如果服务器真的需要它,它可以从数据库中查找它。如果这是更新配置文件视图,那么您无需执行任何操作,可以忽略它不会被发回。
我正在尝试在 Django 中使用 Ajax(使用 FormData)上传个人资料图片。
以下是我在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);
然后我在 Ajax.
的数据属性中发送了fd
然而,在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 发送回服务器?如果服务器真的需要它,它可以从数据库中查找它。如果这是更新配置文件视图,那么您无需执行任何操作,可以忽略它不会被发回。