Я работаю над основанным на 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">×</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, поэтому любая помощь / совет будут оценены.