Как вывести данные, переданные через POST-запрос, в настроенном файле change_form.html

Я хочу вывести данные, полученные в post запросе на cart_change_form.html, но уже несколько дней не могу решить эту задачу.

Было подтверждено, что данные поступают нормально до changeform_view в admin.py, но в cart_change_form.html отображаются только пустые значения, данные до POST запроса.

Подскажите пожалуйста как я могу вывести данные после POST запроса в cart_change.form.html.

#admin.py

def changeform_view(self, request, object_id=None, form_url='', extra_context=None):
        extra_context = {'title': 'Cart Add'}
        extra_context['show_save_and_add_another'] = False
        if request.method == 'POST':
            data = json.loads(request.body)
            extra_context['data'] = data
            print(extra_context['data']) # I successfully got data here
        return super(CartAdmin, self).changeform_view(request, object_id, form_url, extra_context=extra_context)

#cart_change_form.html

{% extends 'admin/change_form.html' %}
{% url 'admin:app_list' app_label=opts.app_label %}
{% load i18n admin_urls static admin_modify jazzmin %}
{% get_jazzmin_settings request as jazzmin_settings %}
{% block cart_extrajs %}
<script type="text/javascript">

    if("{{ data }}"){ # empty value is returned
        alert("hi");
    }
    
</script>
{% endblock %}

В Django вы можете использовать сессию для передачи структурированных данных через представления.

def changeform_view(self, request, object_id=None, form_url='', extra_context=None):
    # Some code ...
    if request.method == 'POST':
        # Some code here ...
        session['change_form_data'] = request.body
    return super(CartAdmin, self).changeform_view(request, object_id, form_url, extra_context=extra_context)

cart_change_form.html

<script type="text/javascript">
// Access to the session data here
let data = "{{ request.session.change_form_data }}"

if(data){
    // Use data here
    alert("hi");
}

</script>

Примечание : Это хорошо только если вы хотите проверить существование. Но если вы хотите использовать данные, например, сохранить json в django view и использовать его в js, то это становится сложно. Из-за некоторых проблем с сериализацией данных. В скрипте выше, если вы сделаете console.log(data);. Вы можете быть удивлены содержимым из-за html специальных символов (&amp;, &quot;, &lt;, &gt; ...) внутри.

).
Вернуться на верх