在Django中清空request.FILES

时间:2015-02-03 09:08:52

标签: python django forms post

我试图通过post请求将文件发送到localhost上的服务器。我在Firefox中使用HttpRequester(在Chrome上也尝试过Postman,在Android上使用Tasker)来汇总请求。 问题是request.FILES总是空的。但是当我尝试打印request.body时,它会显示一些非人类可读的数据,其中特别包括我要上传的文件中的数据(它是一个数据库)。因此,以某种方式文件到达服务器是有道理的。

来自Django docs:

  

请注意,如果请求方法是POST,则FILES将仅包含数据   并发布到请求的那个   ENCTYPE ="多部分/格式数据&#34 ;.否则,FILES将为空白   字典式对象。

当我尝试将内容类型的请求设置为&multi39 / multi-form-data'时,'多部分中的无效边界:无' 。当我添加&#39 ;; boundary = frontier'时,错误消失了。内容类型。

另一种方法是设置enctype =" multipart / form-data"。

因此我有几个问题:

  1. 我应该使用完全多部分/表单数据内容类型吗?
  2. 我在哪里可以指定enctype? (标题,参数等)
  3. 为什么文件的数据包含在request.body中,但request.FILES是空的?
  4. 由于

1 个答案:

答案 0 :(得分:2)

  
      
  1. 我应该使用完全多部分/表单数据内容类型吗?
  2.   

Django仅支持multipart/form-data,因此您必须使用该内容类型。

  
      
  1. 我在哪里可以指定enctype? (标题,参数等)
  2.   
普通HTML中的

只是将enctype="multipart/form-data"作为表单元素的参数之一。在HttpRequester中,它更复杂,因为我认为默认情况下它不支持multipart/form-data。 http://www.w3.org/TR/html4/interact/forms.html#h-17.13.4.2是关于multipart/form-data的更多细节,应该可以手动在HttpRequester中运行它。

  
      
  1. 为什么文件的数据包含在request.body中,但request.FILES是空的?
  2.   

您已经回答过:

  
    

请注意,如果请求方法是POST,则FILES将仅包含数据,并且发布到请求的文件包含enctype =" multipart / form-data"。 否则,FILES将是一个空白的字典对象。