Недавно я создавал серверную часть веб-приложения с помощью Django-rest-framework.
Я пытаюсь создать функцию поиска, в которой пользователь будет вводить имя местоположения, и будут отображаться все результаты, содержащие это имя.
Я использую icontains и Q. Мой тестовый поиск выглядит следующим образом:
class test_search(APIView):
def post(self, request, *args, **kwargs):
serializer_class = customer_location
title = json.loads(request.body).get('title')
queryset = Customers.objects.filter(Q(title__icontains=title))
data = serializers.serialize('json', queryset)
return HttpResponse(data, content_type='application/json')
Я могу видеть страницу, которая просит меня ввести имя местоположения, но когда я ввожу имя и нажимаю POST, ничего не происходит. Я хочу отобразить значения, присутствующие в модели Customer, сериализаторе customer_location, которые соответствуют имени местоположения.
Я использую icontains, так как хочу вернуть все значения, которые его содержат.
Что я делаю не так? Как отобразить совпадающие результаты?
Когда я попробую это -
class test_search(APIView):
def get(self, request, *args, **kwargs):
serializer_class = customer_location
title = request.query_params.get('title')
queryset = Customers.objects.filter(Q(title__icontains=title))
data = serializers.serialize('json', queryset)
return Response(data, content_type='application/json')
Я получаю эту ошибку -
ValueError at /test_search/
Cannot use None as a query value
Request Method: GET
Request URL: http://127.0.0.1:8000/test_search/
Django Version: 2.2.3
Exception Type: ValueError
Exception Value:
Cannot use None as a query value
Exception Location: /usr/local/lib/python3.7/site-packages/django/db/models/sql/query.py in build_lookup, line 1121
Python Executable: /usr/local/opt/python/bin/python3.7
Когда я проверяю Postman, он отображает результаты. Почему он не отображает результат конечной точки / URL-адреса API?