Python - Django - 'InMemoryUploadedFile' 对象没有属性 'split'

Nac*_*uel 2 python django file

我让用户上传一个 txt 文件然后提交它,这样我就可以在我的一个视图中对该文件做一些工作。

我遇到了一些问题,但在社区的帮助下,现在至少可以识别我表单中的 POST 方法。

发生的事情是我的观点无法读取文件。这是我调试我的观点:

在此处输入图片说明

如您所见, do_some_work 方法检查 POST 方法,如果是请求附带的文件,则为 TXT 文件,然后拆分该文件中的行。

嗯,这是行不通的。当我到达那条线时,我得到:

'InMemoryUploadedFile' object has no attribute 'split'
Run Code Online (Sandbox Code Playgroud)

所以我不知道有什么问题。

这是我的表格:

<form  action="{% url "do_some_work" %}" method="POST" enctype="multipart/form-data">
    {% csrf_token %}
    <div class="form-group">
        <label for="exampleInputFile">File input</label>
        <input type="file" id="exampleInputFile" name="some_file">
    </div>
    <button type="submit" class="btn btn-default">Submit</button>
</form>
Run Code Online (Sandbox Code Playgroud)

我将不胜感激。如果您需要更多信息,请告诉我谢谢。

knb*_*nbk 5

您正在尝试拆分文件对象。您只能拆分文件的内容。与普通字符串相比,文件对象具有不同的方式来读取和操作其内容。

InMemoryUploadedFile充当Python的代理file对象。要获取单个行的列表,您可以使用以下readlines()方法:

lines = data.readlines()
Run Code Online (Sandbox Code Playgroud)

如果您只需要遍历各个行,则可以遍历文件对象本身:

for line in data:
    # do something with line
Run Code Online (Sandbox Code Playgroud)