我想通过一个简单的html表单上传一个xlsx文件,并传递值给Django函数进行处理。由于我不了解Ajax,也不知道如何做以下工作,所以我想寻求您的帮助。
我想上传文件并传递一些值。在提交文件/值之后,我希望加载一个页面,该页面将有一组输出值作为预览。我听说Ajax可以提供一种方式,但我不知道怎么做......
<center>
<form method="post" enctype="multipart/form-data" action ='File/'>
{% csrf_token %}<br><br>
Select a file: <input type="file" name="vendorfile"><br>
Start: <input type="text" name="start_value" ><br>
Dest: <input type="text" name="dest_col" ><br>
Num: <input type="text" name="num_col" ><br>
Rate: <input type="text" name="rate_col" ><br>
<button type="submit" >Preview</button>
</form>
</center>
<!DOCTYPE html>
<html lang='en'>
<head>
<meta charset='UTF-8'/>
<meta name='viewport' content='width=device-width, initial-scale=1.0'/>
<meta http-equiv='X-UA-Compatible' content='ie=edge'/>
<title>Document</title>
</head>
<body>
{% for k,v in _empty %}
{% for x,y in v %}
{{ k }}::<br>
{{ x }}::<br>
{{ y }}::
{% endfor %}
{% endfor %}
</body>
</html>
url(r'^(?i)File/$', FileView.as_view(), name='File-Page'),
url(r'^(?i)xls/$',
views.xlsparser, name='XLS'),
def xlsparser(request):
template_name = 'LCR\output.html'
sheet_name = request.POST.get('sheet_name')
start_value = request.POST.get('start_value')
end_value = 40 #request.POST.get('end_value')
dest_value = request.POST.get('dest_col')
num_value = request.POST.get('num_col')
rate_value = request.POST.get('rate_col')
file = request.FILES('vendorfile')
book = xlrd.open_workbook(file)
# book = xlrd.open_workbook(file)
_empty = {}
sheet = book.sheet_by_index(0)
for i in range(start_value, end_value):
cell_key = sheet.cell(i, key_line).value
cell_value = sheet.cell(i,value_line).value
cell_rate = sheet.cell(i,rate_line).value
_empty[cell_key] = [(cell_value,cell_rate)]
return render(request, template_name, _empty)
class FileView(TemplateView):
template_name = "LCR\LCRupload.html"