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

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

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

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

   {% for i in order %} {% if i.order_booked %}  {% else %}  {% endif %}  {% endfor %} 
Reg.nr. Märke Modell
{{ i.regnr|upper }} {{ i.brand|capfirst }} {{ i.brand_model|capfirst }}

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 AJAXview

你的HTML

   {% for i in order %} {% if i.order_booked %}  {% else %}  {% endif %}  {% endfor %} 
Reg.nr. Märke Modell
{{ i.regnr|upper }} {{ i.brand|capfirst }} {{ i.brand_model|capfirst }}

JS

  

视图

 def get_more_tables(request): increment = int(request.GET['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 %}  {% if i.order_booked %}  {% else %}  {% endif %} {{ i.regnr|upper }} {{ i.brand|capfirst }} {{ i.brand_model|capfirst }}  {% endfor %} 

然后确保将新视图添加到urls.py (确保它有name='get_more_tables' ,或者你的JS url:的名称是什么name='get_more_tables'

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

请记住,这将循环不停,因此如果您希望它结束​​,您将不得不向JS添加代码,以便在最后一个响应返回空时停止setInterval