首先,我是Django的新手,几乎完全不熟悉AJAX和jQuery。 我在本地开发。
因此,我正在尝试实现一个HTML表,该表在AJAX的帮助下每X秒钟动态刷新一次(无需页面刷新),但是我似乎无法使我的代码正常工作。
(如果我有足够的代表,我可能会回答这个问题,或者从聊天中寻求帮助,但我还没有那么高兴)
我一直在努力使它工作10多个小时,而我开始感到无助。我一直在疯狂地搜索网络,但是这样做的各种方式让我不知所措,每个问题和答案似乎都已经存在多年了,或者与我的应用程序无关。
此刻,该表对于第一个查询正常工作,它显示的对象Kala的rivinumero = 1(英语行数)。
所以,我有几个问题。
displaykala.html(脚本位于同一文件中)
{% load static %} {% include 'loginbar.html' %} {% include 'nav.html' %} <html> <head> <title>Display</title> <link rel="stylesheet" type="text/css" href="{% get_static_prefix %}css/style.css"> </head> <body> <h1>Display</h1> <table id="_appendHere" class="table table-striped table-condensed"> <tr> <th>Id</th> <th>Nimi</th> <th>Latnimi</th> </tr> {% for kala in kalat %} <tr> <td>{{kala.rivinro}}</td> <td>{{kala.tuote}}</td> <td>{{kala.latinalainen_nimi}}</td> </tr> {% endfor %} </table> </body> </html> <script> var append_increment = 0; setInterval(function() { $.ajax({ type: "GET", url: {% 'get_more_tables.html' %}, // URL to your view that serves new info data: {'append_increment': append_increment} }) .done(function(response) { $('#_appendHere').append(response); append_increment += 10; }); }, 1000) </script>
get_more_tables.html
{% load static %} {% for kala in kalat %} <tr> <td>{{ kala.rivinro }}</td> <td>{{ kala.tuote }}</td> <td>{{ kala.latinalainen_nimi }}</td> </tr> {% endfor %}
views.py
from django.shortcuts import render from adminside.models import Kala from adminside.models import Liha from django.contrib.auth.decorators import login_required # Create your views here. def index(request): return HttpResponse("Index") @login_required def displaykala(request): kalat = Kala.objects.filter(rivinro=1) return render(request, 'displaykala.html', {'kalat': kalat}) @login_required def get_more_tables(request): increment = int(request.GET['increment']) increment_to = increment + 10 kalat = Kala.objects.filter(rivinro=2)[increment:increment_to] return render(request, 'get_more_tables.html', {'kalat': kalat})
urls.py(应用文件夹中的一个)
urlpatterns = [ url(r'^$', views.index, name='index'), url(r'^displayk$', views.displaykala, name='displayk'), url(r'^get_more_tables', views.get_more_tables, name='get_more_tables'), ]
如果代码中出现“是的,我尝试过这种方式”这种愚蠢的实验,我感到很抱歉。
非常感谢@DanielRoseman。“您的JS将值发送为append_increment,但Python尝试访问增量。–“
我将相关行更改为,increment = int(request.GET.get('append_increment'))并修复了错误,现在该表正在动态更新。非常感谢您花费宝贵的时间。现在,我可以继续构建该应用程序!
increment = int(request.GET.get('append_increment'))