Essentially, I am trying to do the same thing as the writer of this and this was trying to do. Which is to dynamically update the values of an html template in a django template via an ajax call.
Both of them managed to fix their issue, however, I am unable to do so after 1.5 days.
index.html
{% extends 'app/base.html' %} {%load staticfiles %} {% block body_block %} <div class="container" > {% if elements %} <table id="_appendHere" class="table table-bordered"> <tr> <th>A</th> <th>B</th> <th>C</th> <th>D</th> <th>User</th> <th>Date</th> </tr> {% for e in elements %} <tr> <td><a href="{{ e.A.url }}">{{e.A}}</a></td> <td><a href="{{ e.B.url }}">{{e.B}}</a></td> <td>{{ e.C }}</td> <td>{{ e.D }}</td> <td>{{ e.User }}</td> <td>{{ e.Date }}</td> </tr> {% endfor %} </table> {% else %} No data to display! <br/> {% endif %} </div> {% endblock %} <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; }); }, 1000) </script> views.py
def index(request): elements = ElementFile.objects.all().order_by('-upload_date') context_dict = {'elements':elements} response = render(request,'app/index.html',context_dict) return response def get_more_tables(request): increment = int(request.GET.get('append_increment')) increment_to = increment + 10 elements = ElementFile.objects.all().order_by('-upload_date')[increment:increment_to] return render(request, 'app/get_more_tables.html', {'elements': elements}) get_more_tables.html
{% for e in elements %} <tr> <td><a href="{{ e.A.url }}">{{e.A}}</a></td> <td><a href="{{ e.B.url }}">{{e.B}}</a></td> <td>{{ e.C }}</td> <td>{{ e.D }}</td> <td>{{ e.User }}</td> <td>{{ e.Date }}</td> </tr> {% endfor %} urls.py
urlpatterns = [ path('', views.index, name=''), path('get_more_tables/', views.get_more_tables, name='get_more_tables'), ] in the javascript part, I tried: url: "{% url 'get_more_tables' %}", with and without quotes
If I try to access /get_more_tables/ I get the following error:
TypeError at /get_more_tables/
int() argument must be a string, a bytes-like object or a number, not 'NoneType'
So for some reason, I get nothing, the append_increment is the empty dictionary. But why? I tried altering the code like, but to no avail:
try: increment = int(request.GET.get('append_increment')) except: increment = 0 Expectation: dynamically loading database Outcome: error or non-dynamic loading (must refresh manually)
Million thanks to everyone who attempts to help with this.