Почему я получаю «Ошибка запроса с кодом состояния 404»

#reactjs #django #django-rest-framework #axios

#reactjs #django #django-rest-framework #axios

Вопрос:

views.py

 class SearchTodo(viewsets.ModelViewSet):
    serializer_class = todoserializer
    
    def get_queryset(self):
        status = self.kwargs["status"]
        return JsonResponse({"data":Todo.objects.filter(status=status)}, content_type='application/json')
  

urls.py для каркаса rest

 router = routers.DefaultRouter()
router.register(r"^todo/(?P<status>w )$",views.SearchTodo,"SearchTodo")
router.register(r"todo",views.todoview,"todor")

urlpatterns = [
    path('admin/', admin.site.urls),
    path("api/",include(router.urls))
]
  

Код Axios для объекта фильтра, который имеет статус True

 const data = () => {
    axios
      .get(`http://127.0.0.1:8000/api/todo/True`)
      .then((res) => settasks(res.data))
      .catch((error) => alert(error.message));
  };
  

но всякий раз, когда эта функция запускается, я получаю ошибку 404 bad request, в которой я ошибаюсь.

Комментарии:

1. get_queryset(...) Предполагается QuerySet , что объект возвращается. Все, что угодно, кроме QuerySet объекта, рано или поздно выдаст ошибку

2. @ArakkalAbu но в нем говорится, что URL-адрес не найден, чем то, как я могу фильтровать объекты, которые вы предлагаете

Ответ №1:

как кто-то упомянул в комментарии, get_queryset() предполагается, что methid возвращает объект QuerySet.

попробуйте что-то вроде

 def get_queryset(self):
    status = self.kwargs["status"]
    return Todo.objects.filter(status=status)