【问题标题】:How to print data passed through the POST request in customized change_form.html如何在自定义 change_form.html 中打印通过 POST 请求传递的数据
【发布时间】:2021-12-22 19:06:11
【问题描述】:

想把post请求中收到的数据打印到cart_change_form.html上,但是这几天没解决。

确认到admin.py的changeform_view数据正常,但是cart_change_form.html中只显示空值,即POST请求前的数据。

请告诉我如何在向 cart_change.form.html 发出 POST 请求后打印数据。

#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 %}

【问题讨论】:

标签: python django


【解决方案1】:

您可以使用会话在 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>

注意:仅当您想检查存在时才可以。但是如果你想使用数据就很难了,比如你想在 django 视图中保存一个 json 并在 js 中使用它。因为数据序列化的一些麻烦。在上面的脚本中,如果您执行console.log(data);。由于 html 特殊字符 (&amp;amp;, &amp;quot;, &amp;lt;, &amp;gt; ...) inside.

,您可能会对内容感到惊讶

【讨论】:

  • 感谢您的回答!!但我还有一个问题。按照您上传的源代码,我成功获取了数据。但是我需要刷新 cart_change_form.html 以获取并检查控制台中的数据...我想知道为什么我需要刷新 cart_change_form.html
猜你喜欢
  • 2018-12-31
  • 1970-01-01
  • 2020-06-02
  • 2023-01-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-10
  • 1970-01-01
相关资源
最近更新 更多