Jquery 如何使用ajax将包含图像的表单提交给Django rest框架?
你能看出我做错了什么吗 以下是在模板标记中创建的表单:Jquery 如何使用ajax将包含图像的表单提交给Django rest框架?,jquery,ajax,django,django-rest-framework,Jquery,Ajax,Django,Django Rest Framework,你能看出我做错了什么吗 以下是在模板标记中创建的表单: @register.simple_tag(takes_context=True) def add_picture_upload(context,textarea_id): a = """<form style="display:none; visibility:hidden;" id="add_image_form" action="/fotos/upload/" method="post" enctype="multipart/
@register.simple_tag(takes_context=True)
def add_picture_upload(context,textarea_id):
a = """<form style="display:none; visibility:hidden;" id="add_image_form" action="/fotos/upload/" method="post" enctype="multipart/form-data" >"""
b = """</form>"""
form = PictureForm()
return a+str(form)+b
这里是ajax请求:
function api_create(content_name, data_dict) {
var req = $.ajax({
url: '/api/'+content_name+'/',
contentType:"application/json",
dataType: "json",
data: data_dict,
processData: false,
type: 'POST'
}).fail(function(jqXHR, status, err){
// fail
})
return req;
}
它给了我:
详细信息:JSON解析错误-“utf8”编解码器无法在中解码字节0xff
位置148:起始字节无效
或者如果我改为JSON.stringify数据,我会得到:
image_字段:[未提交任何文件。]
你有什么建议或网站有一个有效的例子吗?我知道很多人都在努力解决这个问题,但这里的所有其他问题都不会带来任何结果
谢谢您的时间。与流行的观点相反,使用JSON上传文件,这样Django就可以识别文件,而无需对其进行黑客攻击。这是因为,所以您必须自己处理文件序列化和上载 但你有几个选择 与元数据分开处理文件上载。这将需要文件和元数据的独立端点,类似于Dropbox处理和的方式。 Base64在上载文件时对其进行编码,并使用自定义Base64FileField来处理这些文件。drf extras提供了一个可以使用的。 可能重复的
function api_create(content_name, data_dict) {
var req = $.ajax({
url: '/api/'+content_name+'/',
contentType:"application/json",
dataType: "json",
data: data_dict,
processData: false,
type: 'POST'
}).fail(function(jqXHR, status, err){
// fail
})
return req;
}