Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
django 1.5如何从内存中读取csv_Django_File Upload_Csv - Fatal编程技术网

django 1.5如何从内存中读取csv

django 1.5如何从内存中读取csv,django,file-upload,csv,Django,File Upload,Csv,我试图找出如何读取上传的CSV而不保存到磁盘 我被表单卡住了。清理了数据['file']。读取。。。我似乎没有得到任何输出 如果我只知道如何获得输出,那么我就可以编写一个适当的函数来处理数据行 #addreport.html <form enctype="multipart/form-data" method="post" action="/products/addreport/"> {%csrf_token %} <table> {{ form.as_table }

我试图找出如何读取上传的CSV而不保存到磁盘

我被表单卡住了。清理了数据['file']。读取。。。我似乎没有得到任何输出

如果我只知道如何获得输出,那么我就可以编写一个适当的函数来处理数据行

#addreport.html
<form enctype="multipart/form-data" method="post" action="/products/addreport/">   {%csrf_token %}
<table>
{{ form.as_table }}
</table>
<input type="submit" value="Submit" />
--

你能试试吗

import csv

#In your view
line_reader = csv.reader(form.cleaned_data['file'])
for row in line_reader:
    #do something with each row.

对于我的一个项目,我有非常相似的设置。你的表格里有什么干净的方法吗

否则,我认为您可以从
form.cleaned_data['file']
读取文件,很好:

import csv

def addreport(request):
    if request.method == "POST":
        form = UploadFileForm(request.POST, request.FILES)
        if form.is_valid():
            reader = csv.reader(form.cleaned_data['file'])
            for row in reader:
                print row
        else:
            print form.errors
            print request.FILES
            #form = UploadFileForm()
    else:
        form = UploadFileForm()

    return render(request, 'products/addreport.html', {'form': form})
如果不起作用,请尝试直接使用
request.FILES['file']
而不是
form.cleaned\u data['file']


希望有帮助。

csv模块不是可调用的。我假设您仍在本地主机上进行测试?您应该能够在终端中看到一些东西(打印行的结果)。我实际上在OpenShifthm上进行测试,我认为您当时看不到终端输出。您希望如何处理csv的输出?问题是,我没有意识到Django不会输出原始输出,除非它是HTTP响应。在python 3.5上,Was getting
迭代器应该返回字符串,而不是字节。解决方案
import csv

#In your view
line_reader = csv.reader(form.cleaned_data['file'])
for row in line_reader:
    #do something with each row.
import csv

def addreport(request):
    if request.method == "POST":
        form = UploadFileForm(request.POST, request.FILES)
        if form.is_valid():
            reader = csv.reader(form.cleaned_data['file'])
            for row in reader:
                print row
        else:
            print form.errors
            print request.FILES
            #form = UploadFileForm()
    else:
        form = UploadFileForm()

    return render(request, 'products/addreport.html', {'form': form})