Как вывести данные, переданные через 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 специальных символов (&, ", <, > ...)
внутри.