обновить таблицу в django с json - PullRequest
1 голос
/ 17 марта 2020

Я создал веб-страницу с таблицей (bootstrap). Я читаю файл json и отображаю его в таблице следующим образом:

{% extends "blog/base.html"%}
{% block content%}
  <h1>Table Page</h1>
  <table class="table table-borderless table-dark">
    <thead>
      <tr>
        <th scope="col">#</th>
        <th scope="col">Email</th>
        <th scope="col">Count</th>
      </tr>
    </thead>
    <tbody>
        {% for post in posts %}
        <tr>
        <th scope="row">{{ forloop.counter }}</th>
        <td>{{post.Email}}</td>
        <td>{{post.Count}}</td>
        </tr>
        {% endfor %}
    </tbody>
  </table>

{% endblock content%}

он работает хорошо, однако JSON файл, из которого я читаю, обновляется каждые 4-5 минут, и мне нужно постоянно обновлять страницу, это мои views.py

from django.shortcuts import render
from django.http import HttpResponse
import json

with open('/home/usr134/tracker.json') as f:
    config=json.load(f)
def table_test(request):
    context = {'posts':config}
    return render(request,'blog/my_table.html',context)

Я новичок в django, я нашел множество способов обновить, но они используют SQL, есть ли простой способ сделать это?

Примечание: файл json обновляется с использованием скрипта python, если это помогает

1 Ответ

0 голосов
/ 17 марта 2020

Если я правильно понял, вы не хотите запускать python manage.py runserver для получения последних данных из вашего файла tracker.json.

Измените table_test, как показано ниже:

def table_test(request):
    with open('/home/usr134/tracker.json') as f:
        config = json.load(f)
    context = {'posts': config}
    return render(request,'blog/my_table.html',context)

Если вы не хотите перезагружать страницу, вы можете сделать ajax вызов для объединения новых данных, вернув ответ json из вашего представления, который будет иметь код, подобный приведенному выше. В противном случае вы также можете использовать сокет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...