我正在尝试使用django rest框架创建一个api。我需要一个视图来列出datatable中的所有项,另一个视图根据个人id输出个人的数据
列表视图在“api/bios/”下工作。但是,我在向url添加id时收到以下错误:
找不到HTTP 404 允许:获取、放置、修补、删除、头、选项 内容类型:application/json 变化:接受
在{ “detail”:“未找到。” }在
视图.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()
序列化程序.py
^{pr2}$main/网址.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/网址.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'),
]
我猜你需要把这条线从你的主网址.py文件
同时更改您的
^{pr2}$api/urls.py
以包含regex。格式是?P<name>[regex]
。假设trackmanid
是一个整数,则需要在其旁边包含一个\d+
regex。在您是否考虑过将
Viewsets
用于此API?DRF有一个功能强大的ViewSet
,它只需最小的配置就可以执行所有这些功能。例如,可以将其改写为:视图.py
main网址.py
^{pr2}$api/网址.py
剩下的就交给DRF了! 阅读更多信息:http://www.django-rest-framework.org/api-guide/viewsets/
相关问题 更多 >
编程相关推荐