Django ajax upload image(Django ajax 上传图片)
问题描述
我尝试使用没有 django 表单的 Ajax 上传图片.
I try to upload image, using Ajax without django forms.
它不返回错误.一切正常,它保存在数据库名称"和描述"中但不保存图像":(
It not return errors. Everything it's ok, it save in database "name" and "description" but not save "image" :(
我的代码:
views.py
def add(request):
articles = Article.objects.all()
if request.method == 'POST':
if request.is_ajax():
name = request.POST.get('name')
description = request.POST.get('description')
icon = request.FILES.get('icon')
article_new = Article(
name=name,
description=description,
icon=icon
)
article_new.save()
return render_to_response('home.html', {'articles':articles}, context_instance=RequestContext(request))
models.py
class Article(models.Model):
name = models.CharField(max_length=100, null=True, blank=True)
description = models.TextField()
icon = ThumbnailerImageField(upload_to='uploads')
html
<form method="POST" enctype="multipart/form-data">
{% csrf_token %}
<input type="text" id="inputName">
<input type="text" id="inputDescription">
<input type="file" id="inputFile">
<button id="submit" type="submit">Add</button>
</form>
javascript
//For doing AJAX post
$("#submit").click(function(e) {
e.preventDefault();
var name = $('#inputName').val();
var description = $('#inputDescription').val();
var icon = $('#inputFile').val();
//This is the Ajax post.Observe carefully. It is nothing but details of where_to_post,what_to_post
$.ajax({
url : "/add", // the endpoint,commonly same url
type : "POST", // http method
data : { csrfmiddlewaretoken : csrftoken,
name : name,
description : description,
icon: icon
}, // data sent with the post request
// handle a successful response
success : function(json) {
console.log(json); // another sanity check
},
// handle a non-successful response
error : function(xhr,errmsg,err) {
console.log(xhr.status + ": " + xhr.responseText); // provide a bit more info about the error to the console
}
});
});
推荐答案
这里的问题是Ajax代码,不能通过变量直接发送图片.
The issue here is with the Ajax code, you cannot directly send the image via a variable.
为此,您必须创建 FormData,然后将文件添加到其中,可以在此处找到示例:通过 Ajax 发送图像.
To do so, you would have to create FormData and then add the file to it, an example can be found here: Send Images Via Ajax.
或者,只需使用现有的 jquery Ajax 表单插件 即可为您完成所有繁重的工作.
Or, simply use the already existing jquery Ajax Form Plugin which does all the hard work for you.
您的选择,希望对您有所帮助:)
Your choice, hope this helps :)
这篇关于Django ajax 上传图片的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:Django ajax 上传图片


- Fetch API 如何获取响应体? 2022-01-01
- 使用RSelum从网站(报纸档案)中抓取多个网页 2022-09-06
- Quasar 2+Apollo:错误:找不到ID为默认的Apollo客户端。如果您在组件设置之外,请使用ProvideApolloClient() 2022-01-01
- 400或500级别的HTTP响应 2022-01-01
- addEventListener 在 IE 11 中不起作用 2022-01-01
- 失败的 Canvas 360 jquery 插件 2022-01-01
- 如何使用 JSON 格式的 jQuery AJAX 从 .cfm 页面输出查 2022-01-01
- Flexslider 箭头未正确显示 2022-01-01
- Css:将嵌套元素定位在父元素边界之外一点 2022-09-07
- CSS媒体查询(最大高度)不起作用,但为什么? 2022-01-01