Python 使用Django在页面加载之间保留文件内容

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

我试图创建一个页面,从CSV文件中读取信息,然后允许用户针对该CSV文件中的信息运行测试。所有这些都是在一页纸上完成的

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的内容。这将是字符串,您可以将其保存在会话中。或者,您可以将文件临时保存在磁盘中,并在渲染时将文件名保留在上下文数据中,并在接受解析请求时在提交时将文件名发送回。这当然不是推荐的方法,但您可以尝试一下。