Django - 带有休息框架的数据表ajax错误

Posted

技术标签:

【中文标题】Django - 带有休息框架的数据表ajax错误【英文标题】:Django - Datatables ajax error with rest framework 【发布时间】:2021-01-27 07:49:30 【问题描述】:

我正在尝试结合使用 rest 和 Datatables 来显示一个带有服务器端处理的大列表。在数据表 html 模板上,我得到一个带有错误的空表

"DataTables 警告:table id=bib - Ajax 错误。有关详细信息 关于这个错误,请看http://datatables.net/tn/7"。

urls.py

from . import views as v
from rest_framework import routers

router = routers.DefaultRouter()
router.register(r'Bibrest51', v.BibViewSet)

urlpatterns = [
    path('home/', include(router.urls)),
    
    path('home/', v.home, name='home'),
    path('', v.home, name='home'),

views.py

class Get_bib(viewsets.ModelViewSet):
    queryset = Bibrest51.objects.all()
    serializer_class = BibSerializer

home.html

<table id="bib" class="table table-striped table-bordered" style="width:100%" data-server-side="true" 
        data-ajax="/home/Bibrest51/?format=datatables">
   <thead>
      <tr>
         <th data-data="autor" class ="text-center all">Autor</th>
         <th data-data="ano" class ="text-center all">Ano</th>
         <th>Título</th>
         <th data-data="tipo" class ="text-center not-mobile">Tipo</th>
         <th data-data="tema" class ="text-center not-mobile">Tema</th>
      </tr>
   </thead>
   <tbody>
 
   </tbody>
</table>

JS:

 <script>
        $(document).ready(function() 
          $('#bib').DataTable();
      );
  
  </script>

models.py

class Bibrest51(models.Model):
    cadastro_id = models.AutoField(primary_key=True)
    autor = models.CharField(db_column='Autor', max_length=255)
    ano = models.CharField(db_column='Ano', max_length=255)
    titulo = models.CharField(db_column='Titulo', max_length=255)
    referencia = models.CharField(db_column='Referencia', max_length=255)


序列化器.py

from rest_framework import serializers
from .models import Bibrest51

class BibSerializer(serializers.ModelSerializer):
    class Meta:
        model = Bibrest51
        fields = ['autor', 'ano','tipo','tema']

【问题讨论】:

【参考方案1】:

urls.py

path('get_bib/',Get_bib.as_view('get': 'list'), name="get-bib"),

JS:

<script>
    $(document).ready(function() 
     var table = $('#bib').DataTable(
     "responsive": true,
     "destroy": true,
     "serverSide": true,
     "ajax": "/get_bib?format=datatables",

  "columns": [
     "data": "autor", "sortable": false ,
     "data": "ano", "sortable": false ,
     "data": "tipo", "sortable": false ,
     "data": "tema", "sortable": false ,
  ],
  'order': [[1, 'asc']],
  'pageLength': 5,
  'lengthMenu': [[5, 10, 20,], [5, 10, 20,]],
  "oLanguage": 
    "sLengthMenu": "Show _MENU_"
  
);
  );

【讨论】:

我仍然收到 ajax 错误。在控制台上我得到:[13/Oct/2020 11:54:20] "GET / HTTP/1.1" 200 1190073 Not Found: /get_bib [13/Oct/2020 11:54:20] "GET /get_bib?format=datatables&amp;draw=1&amp;columns%5B0%5D%5Bdata%5D=autor&amp;columns%5B0%5D%5Bname%5D=&amp;columns%5B0%5D%5Bsearchable%5D=true=1602600860777 HTTP/1.1" 404 5454 尝试添加 csrf 令牌 Pratap 我得到了它密切关注这个插件在他们的 git github.com/izimobil/django-rest-framework-datatables 上提供的示例。 完美@kari一角

以上是关于Django - 带有休息框架的数据表ajax错误的主要内容,如果未能解决你的问题,请参考以下文章

更改商店的 URL 时,ExtJS 5 应用程序 + Django 休息框架 CORS 错误

AWS Cognito 与 django 休息框架反应 js?

如何使用带有 ajax 的 DJANGO REST 框架发出 POST 请求

Django Rest框架 - 如果表包含响应显示服务器错误(500)的数据

带有 django 的 JQuery AJAX 获取 csrf 错误 403

如何在Django休息框架中验证用户?