【发布时间】:2018-04-24 23:25:26
【问题描述】:
我正在尝试使用 django rest 框架创建一个 api。我需要一个视图来列出数据表中的所有项目,另一个视图根据他们的 id 为个人输出数据。
列表视图适用于“api/bios/”。但是,在向 url 添加 id 时收到以下错误:
HTTP 404 未找到 允许:GET、PUT、PATCH、DELETE、HEAD、OPTIONS 内容类型:应用程序/json 变化:接受
{ “详细信息”:“未找到。” }
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'),
]
【问题讨论】:
-
在 api/urls.py 的 url 正则表达式的开头添加 ^(插入符号)和 $(美元符号)然后你的 url 应该是: url('^(?P
)/$', USAView.as_view(), name='usa-rud-view'), url('^$', USAListView.as_view(), name='usa-list-view'),
标签: python json django api django-rest-framework