Python 使用Django在页面加载之间保留文件内容
我试图创建一个页面,从CSV文件中读取信息,然后允许用户针对该CSV文件中的信息运行测试。所有这些都是在一页纸上完成的Python 使用Django在页面加载之间保留文件内容,python,django,Python,Django,我试图创建一个页面,从CSV文件中读取信息,然后允许用户针对该CSV文件中的信息运行测试。所有这些都是在一页纸上完成的 def parse(request): form = CSVParseForm() if request.method == 'POST': if (request.FILES): csvfile = request.FILES.get('csv_file') reader = csv.reade
def parse(request):
form = CSVParseForm()
if request.method == 'POST':
if (request.FILES):
csvfile = request.FILES.get('csv_file')
reader = csv.reader(codecs.iterdecode(csvfile, 'utf-8'))
tests = []
for row in reader:
tests.append(row[3])
return render(request, 'cbsa/csvparse.html', {'form':form, 'tests' : tests})
else:
# Read info from the session to know what to parse
input_data = request.POST.get('cbstextarea')
else:
pass
return render(request, 'cbsa/csvparse.html', {'form':form})
这是我的页面布局:
[Upload Form]
[Upload Button]
[Test Drop Down Selection Menu]
[Data Input Text Area]
[Parse Button]
[Results]
所以基本上你会上传一个文件。然后它将重新加载页面并填充测试下拉选择菜单。然后选择测试,将数据粘贴到文本区域,然后单击parse。然后,它将在Parse按钮下面显示结果。然后,我希望下拉菜单仍然充满测试,这样用户就可以继续运行测试,而不必继续上传CSV文件
这是我的views.py
函数,用于此单页
def parse(request):
form = CSVParseForm()
if request.method == 'POST':
if (request.FILES):
csvfile = request.FILES.get('csv_file')
reader = csv.reader(codecs.iterdecode(csvfile, 'utf-8'))
tests = []
for row in reader:
tests.append(row[3])
return render(request, 'cbsa/csvparse.html', {'form':form, 'tests' : tests})
else:
# Read info from the session to know what to parse
input_data = request.POST.get('cbstextarea')
else:
pass
return render(request, 'cbsa/csvparse.html', {'form':form})
因此,从页面的第一次加载开始,它应该点击过程
,然后正常呈现页面。然后,一旦用户上传了一个文件,它将获得csv_文件,然后将测试返回到页面。现在,页面将在下拉菜单中显示测试。现在,当我把输入的_数据进行分析时,它会再次进行分析,但现在它没有一个可引用的文件
CSV文件包含我将要检查的所有信息。因此,理想情况下,我希望将这些信息保存在某个地方,或者在页面加载之间将文件保存在内存中。我曾考虑将其存储到会话中,但它只需要可序列化的数据,而读卡器不是其中之一。您可以读取csv的内容。这将是字符串,您可以将其保存在会话中。或者,您可以将文件临时保存在磁盘中,并在渲染时将文件名保留在上下文数据中,并在接受解析请求时在提交时将文件名发送回。这当然不是推荐的方法,但您可以尝试一下。