Представление набора моделей Django Rest Framework, не видящее CSRFToken из таблиц данных

#python #django #ajax #django-rest-framework #datatables

#python #django #ajax #django-rest-framework #таблицы данных

Вопрос:

Я использую пакет djangorestframework-datatables в дополнение к djangorestframework. В дополнение к настройке ajax, предоставленной в документах django, которая устанавливает X-CSRFToken в заголовке, я установил CSRFToken в заголовке с помощью функции ajax datatables:

 Data.columns = [];
  $('th').each(function(item,i){
    Data.columns.push({'data': $(this).text().trim()})
  });

  $('#searchtable').DataTable({
    'serverSide': true,
    'ajax': {
      'url': '/api/v1/reports/?format=datatables',
      'type': 'POST',
      'columns': Data.columns,
      'headers': {'CSRFToken': Data.csrftoken },
    }
  });
  

Вот код drf для представления, о котором я пишу:

 class ReportViewSet(viewsets.ModelViewSet):
    queryset = Report.objects.all()
    serializer_class = ReportSerializer
    permission_classes = [IsAuthenticated]
  

Ошибка, которую я получаю: «Сбой CSRF: токен CSRF отсутствует или неверен» — это в ответе

Кто-нибудь может помочь?

Ответ №1:

В примере приложения он настроен следующим образом:

 $('#albums_post').DataTable({
        "serverSide": true,
        "ajax": {
            "url": "api/post-list/albums/?format=datatables",
            "type": "POST",
            "beforeSend": function(xhr) {
                xhr.setRequestHeader("X-CSRFToken", "{{ csrf_token|escapejs }}");
            }
        },