Не видит мой путь в 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 …
# …