感谢您的第一个反馈,看来我的解释太混乱了,我添加了一些代码块和图片来说明它。
分析列表中的域并将其传递到多结果视图:
def multiresult(request, *args, **kwargs):
input_file = request.FILES['inputFile']
def several_scoring(domain_file):
domain_name_list = []
line = domain_file.readline().decode("utf-8")
while line != "":
domain_name_list.append(line)
line = domain_file.readline().decode("utf-8")
domain_list = []
for line in domain_name_list:
domain = Domain(line.rstrip())
domain.start_scanning()
domain_list.append(domain)
return domain_list
domain_list = several_scoring(input_file)
headers = domain_list[0].header_grading.displayable_list
context = {
'domain_list': domain_list,
'headers': headers,
'domain_list_dict': json.dumps([domain.__as_dict__() for domain in domain_list])
}
return render(request, "multiresult.html", context)
在模板上,我放置了一个下载按钮,以将这些结果通过下载视图保存到生成的csv文件中:
当前下载视图通过url获得domain_list_dict:
<a href="{% url 'domain_analyse:download' domain_list=domain_list_dict %}" method="post" >
<button type="button" class="btn btn-info btn-lg">
<i class="fa fa-download"></i> Télécharger les résultats
</button>
</a>
下载视图能够在获取数据时生成csv文件而不会出现问题。
我的问题是如何在不使用url的情况下将domain_list_dict(采用json格式)传递到下载视图?就像django会自动处理表单一样,我想更改request.POST,但我真的不知道该怎么做。我应该在客户端使用javascript还是可以通过jinja或django机制来做到这一点?
如果仍然缺少信息,请告诉我。
谢谢!
答案 0 :(得分:0)
如果我的理解正确,您希望用户能够下载用户填写表单后生成的文件(.csv)。但是,您不想将数据存储在数据库中或本地。是吗?
换句话说,我在想的是您有一个包含生成的表格的页面和一个显示“下载CSV”或类似名称的按钮。 您可以做的是创建一个URL以下载该.csv,生成该URL,然后在您的响应中使用“ Content-Disposition”标头。就像这个答案: https://stackoverflow.com/a/37299531/9989707