import csv
import io
import re
from django.http import HttpResponse
from django.shortcuts import render
from django.views import generic
from ...forms import CsvUploadForm
import pandas as pd
class CsvImportView(generic.base.View):
def getemailcolumn(self, sample):
for key, val in sample:
print(key, val)
if re.match("^.+@([?)[a-zA-Z0-9-.]+.([a-zA-Z]{2,3}|[0-9]{1,3})(]?)$", val[0]) is not None:
return key
return None
def post(self, request):
form = CsvUploadForm(request.POST, request.FILES)
if form.is_valid():
fieldnames = ['first_name', 'email', 'last_name']
csv = pd.read_csv(request.FILES['csv'])
sample =csv.head();
emailColumn = getemailcolumn(sample)
return HttpResponse(sample)
else:
...
...
在执行post方法时,我收到一个name not defined错误
未定义
名称'getemailcolumn‘
我遗漏了什么?
发布于 2018-07-15 23:14:27
您需要缩进get和post方法,因为python认为它们不是类CsvImportView的一部分。因此,将它们缩进到您要调用的函数中。
编辑:好的,它需要是self.getmailcolumn,而不仅仅是函数名
https://stackoverflow.com/questions/51349646
复制相似问题