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

在Django中重新加载表数据而无需刷新页面

顾正初
2023-03-14
问题内容

在我的视图中获取数据的代码如下所示:

order = Order.objects.filter(owner=request.user).order_by('-id')[:10]

我模板中的代码看起来像这样,效果很好。现在,问题是我希望该表每10秒更新一次其信息,而不刷新整个页面。视图的URL为/,模板的名称为home。

           <table class="table table-striped table-condensed">
              <tr>
                <th>Reg.nr.</th>
                <th>M&auml;rke</th>
                <th>Modell</th>
              </tr>
              {% for i in order %}

                {% if i.order_booked %}
                <tr class="success">
                {% else %}
                <tr>                    
                {% endif %}

                 <td>{{ i.regnr|upper }}</td>
                 <td>{{ i.brand|capfirst }}</td>
                 <td>{{ i.brand_model|capfirst }}</td>
              </tr>
              {% endfor %}
            </table>

urls.py看起来像这样

urlpatterns = [ url(r'^$',views.home, name='home'), url(r'^login/', auth_views.login, {'template_name':'login.html'}, name='account_login'), url(r'^logout/', auth_views.logout, {'template_name':'logout.html'},name='account_logout'), url(r'^add_order/', views.add_order, name='add_order'), url(r'^admin/', admin.site.urls), ]

你们谁能对此有所了解,我将不胜感激!


问题答案:

您可以使用setIntervaljQuery AJAX以及view

您的HTML

   <table id="_appendHere" class="table table-striped table-condensed">
      <tr>
        <th>Reg.nr.</th>
        <th>M&auml;rke</th>
        <th>Modell</th>
      </tr>
      {% for i in order %}
        {% if i.order_booked %}
        <tr class="success">
        {% else %}
        <tr>                    
        {% endif %}

         <td>{{ i.regnr|upper }}</td>
         <td>{{ i.brand|capfirst }}</td>
         <td>{{ i.brand_model|capfirst }}</td>
      </tr>
      {% endfor %}
    </table>

JS

<script>
    var append_increment = 0;
    setInterval(function() {
        $.ajax({
            type: "GET",
            url: {% url 'get_more_tables' %},  // URL to your view that serves new info
            data: {'append_increment': append_increment}
        })
        .done(function(response) {
            $('#_appendHere').append(response);
            append_increment += 10;
        });
    }, 10000)
</script>

视图

def get_more_tables(request):
    increment = int(request.GET['append_increment'])
    increment_to = increment + 10
    order = Order.objects.filter(owner=request.user).order_by('-id')[increment:increment_to]
    return render(request, 'get_more_tables.html', {'order': order})

get_more_tables.html

  {% for i in order %}
  <tr>
    {% if i.order_booked %}
    <tr class="success">
    {% else %}
    <tr>                    
    {% endif %}

     <td>{{ i.regnr|upper }}</td>
     <td>{{ i.brand|capfirst }}</td>
     <td>{{ i.brand_model|capfirst }}</td>
  </tr>
  {% endfor %}

然后只需确保将新视图添加到您的视图中urls.py
(确保它具有name='get_more_tables',或JS中的任何名称url:

它的作用是使用setIntervalJS函数,GET每10000毫秒(10秒)向服务器中的视图发出AJAX请求。然后,该视图使用此新上下文呈现一个单独的HTML文件,并将其作为response回发送到原始HTML页面。全新response然后appended通过jQuery您的餐桌。每次发生此循环时,切片都会递增,因此您不会从获得相同的结果Order

请记住,这将不停地循环,因此,如果要结束它,则必须将代码添加到JS以setInterval在最后一个响应返回为空时停止。



 类似资料:
  • 问题内容: 我从数据库获取数据并将其显示在div中…我要做的是单击链接时应更改div的内容 一种选择是通过URL将参数传递给自身并重新加载页面… 我需要这样做而 无需重新加载\刷新 … 目的是当我单击任何链接时,div和php变量的内容无需刷新即可更新....这样 用户可以看到新数据 ,然后如果执行某些查询,它将在新变量上 ps我知道它将需要一些AJAX,但我不知道AJAX ..所以请以我可以学习

  • 问题内容: 我在一个选项卡中有一个数据表,该表是从索引方法上的控制器发送的数据中加载的。 我有加载数据表的视图 然后在加载页面时在javascript中加载数据表 我也有删除功能。如何在不重新加载页面的情况下重新加载数据(使用Ajax从控制器再次获取数据)? 问题答案:

  • 问题内容: 我有一个网站需要更新状态。就像飞行一样,您要离开,巡航或着陆。我希望能够刷新状态而无需让观众拥有并重新加载整个页面。我知道有一种使用AJAX和jQuery的方法,但是我对它的工作原理没有任何了解。我也不希望他们单击​​按钮。如果有人知道该怎么做,我将不胜感激! 问题答案: 通常,如果您不知道某些事情是如何工作的,请寻找可以学习的示例。 对于此问题,请考虑 您可以看到使用jQuery很容

  • 问题内容: 我有一个分类广告网站,在显示广告的页面上,我正在创建“向朋友发送提示”表单… 因此,任何想要的人都可以将广告提示发送给某些朋友的电子邮件地址。 我猜该表格必须提交到php页面,对吗? 提交表单时,页面被重新加载…我不想要… 有什么办法可以使其不重新加载并仍然发送邮件?最好没有ajax或jquery … 谢谢 问题答案: 您需要提交ajax请求来发送电子邮件,而无需重新加载页面。 您的代

  • 问题内容: 我将如何更新每两秒钟在服务器上更新一次的映像,而无需用户按下刷新按钮,我的第一个猜测是ajax,但我之前从未真正使用过它。有人能指出我正确的方向吗? 编辑:忘记提及图像是由perl脚本生成的.gif-尝试通过url抓取它返回脚本 问题答案: 您的Perl脚本似乎有问题。尝试通过URL访问图像应该仍然返回图像。它应该返回二进制数据而不是脚本。您还应该将响应的Content- type标头

  • 问题内容: 我有一个分类广告网站,在显示广告的页面上,我正在创建“向朋友发送提示”表单… 因此,任何想要的人都可以将广告提示发送给某些朋友的电子邮件地址。 我猜该表格必须提交到php页面,对吗? 提交表单时,页面被重新加载…我不想要… 有什么办法可以使其不重新加载并仍然发送邮件?最好没有ajax或jquery … 谢谢 问题答案: 您需要提交ajax请求来发送电子邮件,而无需重新加载页面。 您的代