当前位置: 首页 > 面试题库 >

在AJAX调用之后,如何更新django模板上下文变量?

李华茂
2023-03-14
问题内容

我有一个表Product,该表显示一组产品的信息。

    <table id="item_table" class="table table-sm table-hover table-bordered">
        <thead class="thead-inverse">
        <tr>
            <th colspan="2">Date</th>
            <th colspan="6">Product name</th>
            <th colspan="2">Category</th>
            <th colspan="2">Amount</th>
        </tr>
        </thead>
        <tbody>
            {% for item in product_list %}
            <tr>
                <td colspan="2">{{ item.date }}</td>
                <td id="item_name_format" colspan="6">{{ item.name }}</td>
                {% if item.category_id %}
                <td id="item_name_format" colspan="2">{{ item.category_id.level1_desc }}</td>
                {% endif %}
                <td id="item_amt_format" colspan="2">${{ item.amount|intcomma }}</td>
            </tr>
            {% endfor %}
        </tbody>
    </table>

我正在使用下面的Ajax调用您更新表。

$(document).ready(function(){

// Submit post on submit
$('.item_num').on('click', function(event){
    event.preventDefault();
    var item_num = $(this).attr('id');
    update_item(item_num);
});

function update_item(item_num) {
    console.log(item_num) // sanity check
    $.ajax({
        type: 'GET',
        url:'update_items', 
        data: { 'item_num': item_num },

        success: function(result){
            console.log(result);
            ???$('item_table').product_list = result;???
        },
... more code

如何在我的Ajax调用中使用“结果”更新变量product_list?

这应该更新表吧?

谢谢


问题答案:

你不能这样。更好的方法是通过ajax加载html的那部分。

您的ajax视图:

def update_items(request):
    product_list = your_data
    return render(request, 'table_body.html', {'product_list':product_list})

您的主要html:

<tbody class="table_body">
   {% include 'table_body.html' %}
</tbody>

table_body.html:

{% for item in product_list %}
  <tr>
     <td colspan="2">{{ item.date }}</td>
     <td id="item_name_format" colspan="6">{{ item.name }}</td>
     {% if item.category_id %}
      <td id="item_name_format" colspan="2">{{ item.category_id.level1_desc }}</td>
     {% endif %}
      <td id="item_amt_format" colspan="2">${{ item.amount|intcomma }}</td>
  </tr>
{% endfor %}

您的ajax看起来像这样:

function update_item(item_num) {
    console.log(item_num) // sanity check
    $('.table_body').html('').load(
        "{% url 'update_items' %}?item_num=" + item_num
    ); // <--- this code instead of $.ajax(lala)

你在这里使用这个load()



 类似资料:
  • 问题内容: 我一直在尝试了解在Django中执行Ajax的最佳方法是什么。通过四处阅读,我了解到常见的过程是: 使用一些JavaScript库(例如jQuery)来制定您的Ajax调用,在Django中设置URL模式以捕获该调用并将其传递给视图函数 在Python视图函数中,检索您感兴趣的对象并将其以JSON格式或类似格式发送回客户端(通过使用内置的序列化器模块或simplejson) 在Java

  • 问题内容: 我有一个奇怪的问题,我想使用上下文处理器添加全局查询。这是我通过以下方法做到的: 这样在我的应用中创建了一个processor.py: 并在我的setting.py结尾处添加了以下内容: 最后,我通过以下观点: 在我的index.html模板上: 最后是我的网址: 我的foos显示没有问题,但是我的media_url和其他上下文消失了。可能是什么问题 问题答案: 当你指定时: 在设置文

  • 问题内容: 我正在网站上运行ajax更新面板。更新面板将返回一些新控件。从ajax调用返回控件后,我想为控件设置一些JavaScript。有什么办法吗?谢谢你的帮助! 问题答案: 参与MSAjax事件 这将在每次更新面板刷新时触发。.您可以在那里进行重新绑定/新绑定 …是的,这就是您需要做的,将其放在页面上,它将启动。 更新:: [看起来我的函数名称不正确(我认为它仍然可以正常工作)] 如果页面上

  • 问题内容: 我有一个表单,可以在用户输入信息后重定向到同一页面(以便他们可以继续输入信息)。如果表单提交成功,我将返回 效果很好。但是,在这种情况下,我还想向用户显示一些消息(例如,屏幕顶部的“您的数据已保存”)。如果不进行重定向,我只会在上下文字典中返回这些消息。但是,有了重定向,我无法做到这一点。 那么在使用HttpResponseRedirect时如何传递模板上下文信息? 我正在尝试做的事情

  • 问题内容: 我正在为一家小型公司的小型Intranet网站工作,用户应该可以在其中发布信息。我想象过一种非常简单的身份验证机制,人们只需输入他们的电子邮件地址,并向其发送唯一的登录网址即可,该网址设置了一个cookie,该cookie可以始终为将来的请求标识他们。 在我的模板设置中,我有base.html,其他页面对此进行了扩展。我想在base.html中显示“登录”或“注册”按钮,但是如何确保必

  • 问题内容: 我正在为一家小型公司的小型Intranet网站工作,用户应该可以在其中发布信息。我想象过一种非常简单的身份验证机制,人们只需输入他们的电子邮件地址,并向其发送一个唯一的登录URL,该URL就会设置一个cookie,该cookie将始终为将来的请求标识他们。 在我的模板设置中,我有base.html,其他页面对此进行了扩展。我想在base.html中显示“登录”或“注册”按钮,但是如何确