Получение данных JSON для Bootstrap Table с сервера Django - PullRequest
0 голосов
/ 27 сентября 2019

Я пытаюсь получить данные для таблицы Bootstrap с сервера Django, когда Json отвечает:

<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous">
<link rel="stylesheet" href="https://unpkg.com/bootstrap-table@1.15.4/dist/bootstrap-table.min.css">
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js" integrity="sha384-UO2eT0CpHqdSJQ6hJty5KVphtPhzWj9WO1clHTMGa3JDZwrnQq4sF86dIHNDz0W1" crossorigin="anonymous"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM" crossorigin="anonymous"></script>
<script src="https://unpkg.com/bootstrap-table@1.15.4/dist/bootstrap-table.min.js"></script>

    <table class="table table-striped" id="table"
        data-toggle="table"
        data-url="https://examples.wenzhixin.net.cn/examples/bootstrap_table/data"
        #data-url="http://totoshick.pythonanywhere.com/getdata"
        data-side-pagination="server">
        <thead>
            <tr>
                <th data-field="id">#</th>
                <th data-field="name">Report name</th>
                <th data-field="description">Description</th>
                <th data-field="link">Link</th>
                <th data-field="start_date">Last launch</th>
            </tr>
        </thead>
    </table>

Данные из таблицы начальной загрузки пример : https://examples.wenzhixin.net.cn/examples/bootstrap_table/data

Мои данные: http://totoshick.pythonanywhere.com/getdata

Таблицауспешно показывает данные из примера, но не мои - «Не найдено подходящих записей».Локальный вариант моих данных:

{
  "total": 5,
  "totalNotFiltered": 5,
  "rows": [
    {
      "id": 1,
      "name": "name1",
      "description": "descr1",
      "link": "link1",
      "start_date": "2019-09-26T14:04:18Z"
    },
    {
      "id": 2,
      "name": "name2",
      "description": "descr2",
      "link": "link2",
      "start_date": "2019-09-26T14:04:37Z"
    },
    {
      "id": 3,
      "name": "name3",
      "description": "descr3",
      "link": "link3",
      "start_date": "2019-09-26T14:04:50Z"
    },
    {
      "id": 4,
      "name": "name4",
      "description": "descr4",
      "link": "link4",
      "start_date": "2019-09-26T14:05:30Z"
    },
    {
      "id": 5,
      "name": "name5",
      "description": "descr5",
      "link": "link5",
      "start_date": "2019-09-26T14:05:46Z"
    }
  ]
}

Согласно документации существует два типа данных json, с которыми работает BT.Я испробовал оба варианта (не удалось), но моя цель на стороне сервера.

Django view.py код:

from django.http import JsonResponse
from django.forms.models import model_to_dict
from .models import Report


def send_data(request):
    reports = Report.objects.all().order_by('start_date')
    serialized_queryset = {"total": reports.count(),
                           "totalNotFiltered": reports.count(),
                           "rows": []}
    for report in reports:
        temp = model_to_dict(report)
        serialized_queryset["rows"].append(temp)

    return JsonResponse(serialized_queryset, json_dumps_params={'indent': 2}, safe=False)
    #return JsonResponse(serialized_queryset["rows"], json_dumps_params={'indent': 2}, safe=False)

Браузер правильно получает данные json

Я понятия не имею, где проблема скрыта, потому что формат json из примера такой же, как мой.Кто-нибудь знает, что может быть не так?

1 Ответ

0 голосов
/ 27 сентября 2019

Отправленный вами фрагмент кода выполняет междоменный запрос из JavaScript.Междоменные запросы возможны с CORS, который должен поддерживаться серверной стороной.

Пример ссылки поддерживает CORS, а ваше приложение Django - нет.Если вы заглянете в инструменты отладки Chrome, вы увидите соответствующее сообщение об ошибке.

enter image description here

...