【发布时间】:2018-07-12 09:33:49
【问题描述】:
感谢第一次反馈,看来我的解释太混乱了,我加了一些代码块和图片来说明。
分析列表中的域并将其传递到多结果视图:
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 机制来做到这一点?
如果信息仍然缺失,请告诉我。
谢谢!
【问题讨论】:
-
很不清楚你在问什么。您应该添加一些代码并解释引用它的问题。
-
但是如果用户发出 POST 请求,您可以将信息存储在
request.POST中。request.POST在服务器端是不可变的。 -
不过,描述有点“混乱”。您能否提供一些示例程序的 MWE,例如构建响应,以便清楚您的目标是什么?
-
json-dump 到 str 到模板上下文并在客户端 json-load 吗?这样您就可以保留数据模型并在浏览器中随心所欲地使用它。
标签: python django django-views