#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)