Не видит мой путь в urls.py, страница не найдена

Я захожу на "http://127.0.0.1:8000/api/v1/personalities/?fio=ti" и вижу "Страница не найдена". А на той же странице показан такой путь:

api/v1/ personalities/ (?P<fio>.+)/$

Почему это не работает?

мой главный urls.py:

path('personalities/', include('api.v1.personalities.urls'))

personalities.urls.py:

re_path('(?P<fio>.+)/$', PersonalitiesFilterView.as_view())

Я следовал документации с сайта django_filters https://www.django-rest-framework.org/api-guide/filtering/

Часть после ? является строкой запроса [wiki], а не частью пути. Поэтому вы не можете перехватить ее с помощью regex или path(…).

Вы можете прочитать строку запроса как словареподобную структуру с помощью request.query_params [DRF-doc] (только для APIView) или request.GET [Django-doc].

Таким образом, шаблон выглядит следующим образом:

path('', PersonalitiesFilterView.as_view())

и в представлении, таким образом, вы можете получить доступ к значению для fio с помощью:

class PersonalitiesFilterView(ListAPIView):

    def get_queryset(self, *args, **kwargs):
        qs = super().get_queryset(*args, **kwargs)
        if 'fio' in self.request.query_params:
            value = self.request.query_params['fio']
            # do something …
        # …
Вернуться на верх