Django функция поиска, которая вызывает другие представления, возвращает ValueError - PullRequest
0 голосов
/ 01 марта 2020

Я создал функцию просмотра для сбора всех поисковых запросов, а затем обрабатывал каждый из них в зависимости от типа поиска. На первом этапе я попытался передать все запросы другой функции просмотра, чтобы проверить, работает ли этот подход:

в основном приложении urls.py

from searchapp.views import search

urlpatterns += [
    path('search', search)
]

в views.py для searchapp

def search(request):
    if request.method == 'GET':
        return other_view_function(request, query=request.GET.get('q'))
    else:
        return HttpResponseNotFound('Search query is not provided.')

Однако я получаю ошибку значения независимо от того, включаю я в вызов q или нет:

The view searchapp.views.search didn't return an HttpResponse object. It returned None instead.

Вероятно, это очевидная синтаксическая ошибка, которую я не вижу!

1 Ответ

0 голосов
/ 01 марта 2020

Проблема в том, что даже если не задано q, метод все еще GET, поэтому условие if всегда истинно.

Я изменил функцию представления таким образом, и теперь она работает просто отлично:

def search(request):
    if len(request.GET.get('q', '')) > 0:
        return other_view_function(request, query=request.GET.get('q'))
    else:
        return HttpResponseNotFound('Search query is not provided.')

также добавил / к urls.py

from searchapp.views import search

urlpatterns += [
    path('search/', search)
]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...