Ошибка - POST /dsahboard/api/investigator HTTP/1.1 400 160 - Ошибка Django REST API
Я пытаюсь встроить редактор DataTables в Django REST API. В то время как я могу заставить отображаться таблицу данных, кнопка создания не работает и возвращается.
"POST /dashboard/api/investigator/ HTTP/1.1" 400 160
Я настроил редактор в соответствии с документацией, но API все равно не хочет его принимать. Код состояния 400 указывает на то, что это плохой запрос, но что означает 160? Может ли кто-нибудь подсказать, может я неправильно настроил таблицу данных?
urls.py
from django.urls import path, include
from . import views
from rest_framework import routers
from .views import StudyList, StudyDetail, InvestigatorView
app_name = 'dashboard'
router = routers.DefaultRouter()
router.register('study', views.StudyView)
router.register('investigator', views.InvestigatorView)
router.register('lead', views.LeadView)
router.register('institution', views.InstitutionView)
router.register('site', views.SiteView)
investigator_list = InvestigatorView.as_view({
'get': 'list',
'post': 'create'
})
investigator_detail = InvestigatorView.as_view({
'get': 'retrieve',
'PUT': 'update',
'patch': 'partial_update',
'delete': 'destroy'
})
urlpatterns = [
path('', views.datatables, name='datatable'),
path('investigator/', views.datatables_investigator, name='datatables_investigator'),
path('api/', include(router.urls)),
path('api/investigator/', investigator_list, name='InvestigatorList'),
path('api/investigator/<int:pk>', investigator_detail, name='InvestigatorDetail'),
path('api/study/', StudyList.as_view(), name='StudyList'),
path('api/study/<int:pk>/', StudyDetail.as_view(), name='StudyDetail')
]
datatables_investigator.html
serializers.py
from rest_framework import serializers
from dashboard.models import Study, Investigator, Lead, Institution, Site
class InstitutionSerializer(serializers.ModelSerializer):
class Meta:
model = Institution
fields = ('name', 'dept')
class InvestigatorSerializer(WritableNestedModelSerializer, serializers.ModelSerializer):
institution = InstitutionSerializer
class Meta:
model = Investigator
fields = ('__all__')
depth = 1
datatables_always_serialize = ('id',)
views.py
from django.shortcuts import render, redirect
from .models import Study, Investigator, Lead, Institution, Site
from .forms import StudyForm
from django.views.decorators.csrf import csrf_exempt
from rest_framework import viewsets, generics
from rest_framework.permissions import AllowAny
from .serializers import StudySerializer, InvestigatorSerializer, LeadSerializer, InstitutionSerializer, SiteSerializer
# Datatable Views
@csrf_exempt#@csrf_protect#@ensure_csrf_cookie
def datatables(request):
return render(request, 'datatables.html')
def datatables_investigator(request):
return render(request, 'datatables_investigator.html')
#API Views
class InvestigatorView(viewsets.ModelViewSet):
queryset = Investigator.objects.all()
serializer_class = InvestigatorSerializer
permission_classes = [AllowAny]
class InstitutionView(viewsets.ModelViewSet):
queryset = Institution.objects.all()
serializer_class = InstitutionSerializer
При использовании пакета djangorestframework-datatables-editor python, URL должен быть установлен в http://127.0.0.1:8000/dashboard/api/investigator/editor/?format=datatables
, а не http://127.0.0.1:8000/dashboard/api/investigator/
. Это позволит считывать данные в формате редактора.