我试图创建一个视图来上传一个。csv文件并在模板上解析它,但是它返回了一个
MultiValueDictKeyError at /“文件”
null
模板具有
<form method="POST" enctype="multipart/form-data">{% csrf_token %} <div class="file-field input-field"> <div class="btn"> <span>Upload a CSV FILE</span> <input type="file" name="file"> </div> <div class="file-path-wrapper"> <input class="file-path validate" type="text"> </div> <button class="waves-effect waves-light btn teal" type="submit">Upload</button> </div> </form>
null
null
那么我的观点
import csv, io from django.shortcuts import render from django.contrib import messages def data_upload(request): template = "home.html" if request.method == 'GET': return render(request, template) csv_file = request.FILES['file'] if not csv_file.name.endswith('.csv'): messages.error(request, 'Please upload a .csv file.') data_set = csv_file.read().decode('UTF-8') io_string = io.StringIO(data_set) next(io_string) for column in csv.reader(io_string, delimiter=',', quoteschar="|"): _, created = Table.objects.update_or_create( page=column[0], keyword=column[1], interval=column[2], email=column[3], billing=column[4], notes=column[5], ) context = {} return render(request, template, context)我想知道为什么它返回错误(?)。
我补充道
null
if request.method == 'GET':
return render(request, template)
@highcenbug您的views.py文件中仍有一处更正。你需要使用Quotechar。
for column in csv.reader(io_string, delimiter=',', quotechar="|"):