Dan*_*hal 7 python csv django parsing
我有一个包含许多字段的Django模型(大约24个),显然我的用户希望能够使用电子表格上传创建此对象的实例,而不是手动将所有数据输入表单.
我发现使用python的内置CSV模块应该会使这个变得相当简单,但是我很难弄清楚如何使用它.
让我们从代码方面开始:
def upload_file(request):
if request.method == "POST":
form = UploadFileForm(request.POST, request.FILES)
if form.is_valid():
handle_files(request.FILES['file'])
return HttpResponseRedirect('/workflow/')
else:
print form.errors
print request.FILES
return HttpResponseRedirect('/workflow/upload')
else:
form = UploadFileForm()
return render(request, 'fileform.html', {'formset': form})
Run Code Online (Sandbox Code Playgroud)
这接受CSV文件作为上传,并将其handle_files交给处理解析和对象创建.这是我遇到麻烦的方法.
def handle_files(f):
reader = csv.DictReader(f, delimiter=' ', quotechar='|')
... #?
Run Code Online (Sandbox Code Playgroud)
我一直试图模仿python文档(http://docs.python.org/2/library/csv.html),但DictReader的文档记录非常糟糕.我提供csv.DictReader()了适当的论据吗?如果有,我如何获取信息reader?我将为用户提供模板,因此我可以假设CSV文件的每一列都有可预测的数据.也就是说,我知道列A将具有与字段X对应的数据,而列B对应于Y等.如何从读取器解析数据,然后使用该数据创建对象?
我猜它会是这样的:
for row in reader:
X=row[1]
Y=row[2]
#etc
my_object = MyObject(x=X, y=Y)
my_object.save()
Run Code Online (Sandbox Code Playgroud)
这样离开了吗?我应该使用其他类型的CSV阅读器吗?
感谢您的帮助,我知道这篇文章中有很多问题.
我最近刚刚开始使用 Django,但之前使用过 python csv 库。当我使用它时,我只需执行以下操作:
import csv
...
reader = csv.reader(f)
for row in reader:
#do something with each row
f.close()
Run Code Online (Sandbox Code Playgroud)
所以你们已经很接近了。另外,索引从 0 开始,因此如果您想要第一个元素,请使用row[0].
这里有关于 csv 库的更多信息。仅当文件格式不同时才需要使用分隔符和其他参数。
| 归档时间: |
|
| 查看次数: |
11299 次 |
| 最近记录: |