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&draw=1&columns%5B0%5D%5Bdata%5D=autor&columns%5B0%5D%5Bname%5D=&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)的数据