问题描述
我正在尝试上传文本文件,这些文件将转换为csvs,然后转换为我的数据库。但是,仅当我在项目目录中创建了文本文件时,文件上传才有效。例如,当我在此处创建一个文本文件时,它可以工作-
我可以使用“上传文件”按钮将此文件拖到我的模板中,这将使数据库中的行成行。
当我在桌面上创建test.txt文件并尝试将其导入模板时,什么也没有发生,并且它返回一个空的csv文件。
Views.py
@login_required(login_url='login')
def upload(request,*args,**kwargs):
if request.method == "GET":
return render(request,'users/upload.html')
if request.method == "POST":
# Create subject object in database
cram_set = CramSet.objects.create(
subject='Other',name='',)
raw_file = request.FILES['file']
contents = raw_file.read().decode('UTF-8')
question_pattern = re.findall(
r'^\d+\)\s*((?:(?:(?!^\d+\))[\s\S])*?\n(([A-Z])\)(?:(?!^\d+\))[\s\S])*?)$)?(?:(?!^\d+\))[\s\S])*?)\nAnswer:\s*(\3|FALSE|TRUE)\nExplanation:\s*(.*)',contents,re.M)
df = pd.DataFrame(question_pattern,columns=["Question","Answer","1","2","Explanation"])
clean_df = df.drop(columns=["1","2"])
data_set = clean_df.to_csv(index=False)
io_string = io.StringIO(data_set)
next(io_string)
for column in csv.reader(io_string,delimiter=',',quotechar='"',quoting=csv.QUOTE_MINIMAL):
_,created = Question.objects.update_or_create(
question=column[0],answer=column[1],explanation=column[2],cram_set_id=cram_set.pk,)
return redirect('/users/' + request.user.username + '/')
return render(request,'users/upload.html')
我是否需要将这些文件保存在项目的媒体文件中,以便它们上传后可以使用它们?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)