I am trying to create an api using django rest framework. I need one view to list all items in the datatable and another view that outputs the data for an individual person based on their id.
The list view works at 'api/bios/'. However, I receive the following error when adding an id to the url:
HTTP 404 Not Found Allow: GET, PUT, PATCH, DELETE, HEAD, OPTIONS Content-Type: application/json Vary: Accept
{ "detail": "Not found." }
views.py
from rest_framework.response import Response
from rest_framework import status
from rest_framework import generics, mixins
from api.models import Playerbios
from api.serializers import USASerializer
class USAListView(mixins.CreateModelMixin, generics.ListAPIView):
lookup_field = 'trackmanid'
serializer_class = USASerializer
def get_queryset(self):
return Playerbios.objects.all()
def perform_create(self, serializer):
serializer.save(user=self.request.user)
def post(self, request, *args, **kwargs):
return self.create(request, *args, **kwargs)
class USAView(generics.RetrieveUpdateDestroyAPIView):
lookup_field = 'trackmanid'
serializer_class = USASerializer
def get_queryset(self):
return Playerbios.objects.all()
serializers.py
from rest_framework import serializers
from api.models import Playerbios
class USASerializer(serializers.ModelSerializer):
class Meta:
model = Playerbios
fields = '__all__'
lookup_field = 'trackmanid'
main/urls.py
from django.contrib import admin
from django.urls import path, include
from api.views import USAView, USAListView
urlpatterns = [
path('admin/', admin.site.urls),
path('api/bios/', include('api.urls')),
path('api/bios/<trackmanid>/', include('api.urls')),
path('accounts/', include('django.contrib.auth.urls')),
path('', include('webapp.urls')),
]
api/urls.py
from django.conf.urls import url, include
from .views import USAView, USAListView
urlpatterns = [
url('(?P<trackmanid>)/', USAView.as_view(), name='usa-rud-view'),
url('', USAListView.as_view(), name='usa-list-view'),
]