#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 }}");
}
},