您能发现我做错了什么吗?

这是表单(在模板标签中创建):

@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

在这里,在提交时调用的javascript:

function html_add_image(event) {
  event.stopPropagation(); // Stop stuff happening
  event.preventDefault(); // Totally stop stuff happening
  var data_dict = new FormData($(this)[0]);
  var req = api_create("pictures", data_dict);
  req.done(function(data) {
    alert(data);
  })
}

这里的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'编解码器无法解码位置148中的字节0xff:无效的起始字节”

或者如果我用JSON.stringify数据代替,我得到:

image_field:[“未提交任何文件。”]

您是否有任何建议或网站提供了可行的示例? 我知道很多人都在为此苦苦挣扎,但是这里的所有其他问题并没有真正解决。

感谢您的时间。

#1楼 票数:0

与流行的看法相反, 不可能使用JSON上传文件,以使Django可以识别文件而不会对其进行黑客攻击。 这是因为JSON本身不支持文件上传 ,因此您必须自己处理文件序列化和上传。

但是你有一些选择

  • 将文件上传与元数据分开处理。 这将需要文件和元数据的单独端点,类似于Dropbox 分离文件上载元数据的操作
  • 在上传文件时对它们进行Base64编码,并使用自定义的Base64FileField进行处理。 drf-extras提供了可以使用的Base64ImageField

  ask by JasonTS translate from so

未解决问题?本站智能推荐:

1回复

定制渲染将二进制数据返回到Django-rest框架中的ajax调用

我正在对其余api进行ajax调用,并且希望获得原始的二进制数据。 宁静的API是 服务器返回代码200,但是由于parseError和errorThrown显示No conversion from text to application/octet-stream ajax跳转到
2回复

如何使用带有Ajax的DJANGO REST框架发出POST请求

这是我的模型课: 这是我的序列化器: 现在,我需要通过AJAX调用发出POST请求。 谁能提供有关我如何完成此任务的信息? 这是我的views.py 和我的urls.py 这是我的ajax请求
3回复

使用ajax和djangorestframework 403错误通过django表单发送文件

我正在尝试使用ajax从django模板形式发送pdf文件,并使用djangorestframwork在views.py中获取数据。 适用于常规数据,但在这种情况下,我会收到403错误 表格 模板和jQuery / js: urls.py: views.py:
1回复

如何使用Ajax / jQuery / Javascript在Django-REST-Framework中访问和使用令牌认证并在前端显示API结果

我使用Django及其强大的模板已有相当长的一段时间了,但是突然之间我不得不切换到包括JavaScript,jQuery和AJAX在内的前端语言和技术(完全不同和新的)。 我想在前端使用HTML,CSS,Javascript,Ajax,jQuery(无论哪种组合)访问我的API数据 通过
1回复

如何使用Ajax,Jinja,django和django rest框架更新模板object_list

这是我第一次使用django进行大型项目,也是第一次使用ajax。 我想每隔x秒使用jquery使用ajax更新客户端名称列表。 我找到了一些解决方案,但没有找到适合我项目的解决方案... 我的JQuery和Ajax: 我的观点: 我的模板代码: 我已经在接
1回复

如何使用django只有一个后端并使用django-rest-framework发布

我将仅使用Django作为后端。 前端将使用React而不是django模板完成。 我正在使用django-rest-framework为我的网站创建一个rest api。 我为用户制作了一个序列化器。 在浏览器中,当我转到/ custom / users /我可以查看用户。
1回复

jQuery和django-rest-framework-bulk:发送列表

我需要使用django-restframework-bulk mixins将对象列表发送到视图: 在浏览器端,我正在尝试发送一个对象的数组(列表):
1回复

使用HTML页面或模板中的Django-REST-Framework从Django中创建的API的前端获取/显示API数据

我在Django上工作了一段时间,但仅在基本后端级别上工作。 现在,我开始使用DRF或Django-REST-Framework创建API,这对我来说是新事物。 我已经成功地使用它制作了一个API,并通过点击数据的URL使用Postman对其进行了测试。 我的应用程序将数据作为JSON发送