Возврат загрузки 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'
)
Вернуться на верх