在django POST中操作request.FILES

时间:2017-11-06 13:05:20

标签: django django-forms

我在django中有一个文件上传视图。我有一个模型表格。在POST方法中, request.FILES 包含所有文件。

我想在request.FILES中对上传的文件做一些额外的工作。我在本地保存了文件并做了一些额外的工作。但是我无法在request.FILES中分配文件。

我做了一个字典 -

data_dict = {
                        'a_file': open(tmp_dir + "/a_repro.a", 'r'),
                        'b_file': open(tmp_dir + "/b_repro.b", 'r'),

                        'c_file': open(tmp_dir + "/c_repro.c", 'r'),

                        'd_file': open(tmp_dir + "/d_repro.d", 'r'),

                    }

但我不能指定像 -

form = MyUploadForm(request.POST, data_dict)

,或者

  

request.FILES = data_dict

但它不起作用。我该怎么办?

1 个答案:

答案 0 :(得分:1)

您无需动态request.FILES。因为,表单将采用参数datafiles。 根据您的要求,您可以执行以下操作

files = {
   'a_file': open(tmp_dir + "/a_repro.a", 'r').read(),
}

form = MyUploadForm(data=request.POST, files=files)

供参考,请参阅:https://github.com/django/django/blob/master/django/forms/forms.py#L74