Возврат загрузки Django
простой вопрос, пожалуйста, мой POST в представлениях возвращает словарь в формате json
nested_data = {
'name': cleaned_data3['theme_name'],
'visualStyles': {
'barChart': {
'*': {
'general': [{
'responsive': cleaned_data2['responsive'],
'keepLayerOrder': cleaned_data2['maintain_layer_order']
}],
'legend': [{
'show': cleaned_data['show'],
'position': cleaned_data['position'],
'showTitle': cleaned_data['show_title'],
'labelColor': {
'solid': {
'color': '#666666'
}
},
'fontFamily': cleaned_data['font'],
'fontSize': cleaned_data['font_size']
}],
}
}
}
}
тогда я возвращаю код, отформатированный в json, используя:
return JsonResponse(nested_data)
Это показывает мне json, отображаемый в браузере, но как мне загрузить этот возврат? В моем index.html кнопка submit отображает возврат из просмотра, но мне нужно отправить формы и загрузить содержимое в .json файл, что-то нужно вставить в href?
<input type="submit" value="Submit">
<a href="{{ xxx }}" download>DOWNLOAD</a>
Вы должны определить функцию для записи json в views.py или index.html.
with open(file_name, "wb") as f:
f.write(data)
Если вы собираетесь написать его в views.py, вы можете написать следующие строки в разделе js кода.
csrfmiddlewaretoken: "{{ csrf_token }}"
Вам необходимо изменить тип содержимого ответа на application/force-download
.
response = JsonResponse(nested_data)
response['Content-Type'] = 'application/force-download'
return response
# or ...
return HttpResponse(
simplejson.dumps(nested_data),
content_type='application/force-download'
)