Я новый Python и Django. Я создал ViewSet следующим образом:
api/views.py
class UserDetails(ViewSet):
"""
CREATE, SELECT, UPDATE OR DELETE
"""
def retrive(self, request, pk):
user = self.get_object(pk)
print(user.query)
user = TestSerializer(user)
return Response(user.data)
def list(self, request):
users = TestTB.objects.all()
print(users.query)
serializer = TestSerializer(users, many=True)
return Response(serializer.data)
def create(self, request):
serializer = TestSerializer(data=request.data)
if serializer.is_valid():
serializer.save()
return Response(serializer.data, status=status.HTTP_201_CREATED)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
def update(self, request, pk):
user = self.get_object(pk)
serializer = TestSerializer(user, data=request.data)
if serializer.is_valid():
serializer.save()
return Response(serializer.data)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
def destroy(self, request, pk):
user = self.get_object(pk)
user.delete()
return Response(status=status.HTTP_204_NO_CONTENT)
def get_object(self, pk):
try:
return TestTB.objects.get(pk=pk)
except TestTB.DoesNotExist:
raise Http404
api/urls.py
router = routers.DefaultRouter()
router.register(r'users', UserDetails, base_name='user-details')
urlpatterns = router.urls
Это отлично работает с запросом POST для создания нового ресурса, запросом GET для получения всех ресурсов, запросом PUT для обновления ресурса и запросом DELETE для удаления ресурса. Но как я могу получить один ресурс? Когда я делаю запрос типа http://127.0.0.1:8000/api/users/1/
, он показывает ошибку -
{ "detail": "Метод \"GET\" не разрешен." }
Это означает, что метод retrieve() в UserDetails никогда не вызывается. Я знаю, что что-то упускаю, но не могу понять, что.
print(user.query)
выдает ошибку. Есть ли другой способ просмотреть, какой запрос запускается? - person Zalak Parikh   schedule 12.09.2017user
не является набором запросов. - person Sachin   schedule 12.09.2017user
- это объект. Но я спрашиваю, как просмотреть запрос в этом случае? - person Zalak Parikh   schedule 12.09.2017django.db.connection
для запросов. - person Sachin   schedule 12.09.2017serializer_class = TestSerializer
иqueryset = TestTB.objects.all()
в представление? ЧемTestTB.objects.all()
получит все строки - person Zalak Parikh   schedule 12.09.2017.all()
. Это также может быть любой отфильтрованный набор запросов. - person Sachin   schedule 12.09.2017