使用Django Rest Fram接收“detail”:“not found”查看详细信息

2024-05-15 17:14:44 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试使用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'),
]

Tags: pathdjangofrompyimportself视图rest
2条回答

我猜你需要把这条线从你的主网址.py文件

path('api/bios/<trackmanid>/', include('api.urls'))

同时更改您的api/urls.py以包含regex。格式是?P<name>[regex]。假设trackmanid是一个整数,则需要在其旁边包含一个\d+regex。在

^{pr2}$

您是否考虑过将Viewsets用于此API?DRF有一个功能强大的ViewSet,它只需最小的配置就可以执行所有这些功能。例如,可以将其改写为:

视图.py

class USAViewset(ModelViewSet):
    queryset = Playerbios.objects.all()
    serializer_class = USASerializer
    lookup_field = 'trackmanid'

main网址.py

^{pr2}$

api/网址.py

urlpatterns = patterns(
    '',
)
router = DefaultRouter()
router.register(r'coupon', USAViewset)
urlpatterns += router.urls

剩下的就交给DRF了! 阅读更多信息:http://www.django-rest-framework.org/api-guide/viewsets/

相关问题 更多 >