class StoreAPIView(APIView):
def get(self, request, store_id=None):
if store_id is None:
qs = Store.objects.all()
return Reponse(.......)
else:
try:
store_obj = Store.objects.get(id=store_id)
serilized_data = StoreSerializer(store_obj).data
return Response(....)
except Exception as e:
return Response(...)
网址
path('stores/<int:store_id>', StoreAPIView.as_view(), name='hello2')
您还可以使用更好的视图集:
from django.shortcuts import get_object_or_404
from myapps.serializers import StoreSerializer
from rest_framework import viewsets
from rest_framework.response import Response
class StoreViewSet(viewsets.ViewSet):
def list(self, request):
queryset = Store.objects.all()
serializer = StoreSerializer(queryset, many=True)
return Response(serializer.data)
def retrieve(self, request, pk=None):
queryset = Store.objects.all()
store = get_object_or_404(queryset, pk=pk)
serializer = StoreSerializer(store)
return Response(serializer.data)
urls.py
from myapp.views import StoreViewSet
from rest_framework.routers import DefaultRouter
router = DefaultRouter()
router.register(r'stores', UserViewSet, basename='store')
urlpatterns = router.urls