Должен ли я использовать мой views.py для загрузки данных вместо Jquery / Ajax? - PullRequest
0 голосов
/ 01 ноября 2019

Я работаю над основанным на Django веб-приложением, где я извлекаю некоторые данные JSON из внешнего API в html-модале начальной загрузки. Оттуда я делаю некоторые расчеты с данными и выбираю определенные записи, изменяю их класс html и т. Д.

В настоящее время я использую запрос получения Ajax для получения данных, а затем прямой JavaScript, чтобы отобразить их в модальном режиме и сделатькласс меняется и расчеты. Я думаю, что было бы лучше сделать это из моего файла Django views.py вместо

Что я сделал до сих пор

Ajax Get Call

$.ajax({
  cache: false,
  method: 'GET',
  url: url,
  success: function(data){
    console.log(data)
    console.log("success")
    showTable(data)
    $('#total').text(doSum(".price>span"))
  },
  error: function(error_data){
    console.log("error")
  }
})

Отображение данных в таблице в модальном формате

function showTable(data) {
 $("#food_table tbody").html('<tr class="contentRow">'
  +data.map(v=>'<td>'+v.pk+'</td><td>'
    +v.Description+'</td><td class="price">R<span>'
    +v.Price+'</span></td></tr>' ).join(''));
}

Мой модальный загрузочный стол и таблица

<div id="firstModal" class="modal fade"  tabindex="-1" role="dialog" aria-labelledby="firstModalLabel" aria-hidden="true">
      <div class="modal-dialog modal-lg" role="document">
        <div class="modal-content">
          <div class="modal-header">
            <h5 class="modal-title" id="firstModalLabel">Table 1</h5>
            <button type="button" class="close" data-dismiss="modal" aria-label="Close">
              <span aria-hidden="true">&times;</span>
            </button>
          </div>
          <div class="modal-body">
            <div class="container">
              <div class="table-responsive">
                <table class="table table table-borderless" id="food_table">
                  <thead>
                    <tr>
                      <th>#</th>
                      <th>Description</th>
                      <th>Price</th>
                    </tr>
                  </thead>
                  <tbody></tbody>
                </table>
              </div>


            </div>
          </div>
          <div class="modal-footer">
            <div class="container">
              <div><h3 class="h3total">You Owe: R<span id="subtotal"></span><br></h3></div>
              <!-- <h3 class="totals">Total: R<span id="total"></span></h3> -->
            </div>

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

Что-то вроде ...

views.py

class DataListView(ListView):
    model = New_Table_Of_JSON_Data
    template_name = 'ShowModalAndTable.html'
    context_object_name = 'JsonObjects'

Тогда мой HTML в ShowModalAndTable.html

{% block content %}
....ALL MODAL HTML


                  {% for JsonObject in JsonObjects %}
                      <thead>
                        <tr>
                          <th>#</th>
                          <th>Description</th>
                          <th>Price</th>
                        </tr>
                        <tr>
                          <td>{{ JsonObjects.pk }}</td>
                          <td>{{ JsonObjects.Price }}</td>
                          <td>{{ JsonObjects.Description }}</td>
                        </tr>
                      </thead>

               {% endfor %}

{% endblock content %}

Некоторые данные

[
{
    "pk": 1,
    "Description": "Pizza",
    "Price": "75.50"
},
{
    "pk": 2,
    "Description": "Hamburger",
    "Price": "68.00"
},
{
    "pk": 3,
    "Description": "Steak",
    "Price": "130.95"
},
{
    "pk": 4,
    "Description": "Water",
    "Price": "15.00"
}
]

Я думаю, что оба варианта работают, однако я не уверен, какой из них будет лучшим в будущем. Например, с помощью views.py легче показать каждую запись данных, но при попытке выяснить, какая запись была выбрана пользователем, может быть сложнее, а также выполнять вычисления для строк, которые имеют определенный класс HTML.

Я довольно новичок в django и javascript / Jquery, поэтому любая помощь / совет будут оценены.

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