#django
#django
Вопрос:
Я реализую некоторый механизм поиска в своем приложении, пытаясь получить запрос из ввода, найти его в базе данных (sqlite) и отобразить его в шаблоне. Проблема в том, что я получаю сообщение об ошибке:
.views не вернули объект HttpResponse . Вместо этого он вернул None .
Логика такая:
1) создание функции, которая будет проверять данный запрос
def search_query(request,search,query):
checking = check_in(query) #check if query is in DB
if checking == False: #if not, get data from search api and save it
search_querys = requests.get(search)
json_search = search_querys.json()
for each in json_search['data']:
user_id = each['id']
name = each['name']
picture = each['picture']['data']['url']
Profiles.objects.create(user_id=user_id, name=name, picture=picture)
return render(request, 'FB_search/home.html')
else: # <--assuming that here's the problem. For testing purpose, I'm writing query for which I know that they are in DB and I'd like to return in tamplet
context = {
'profiles': Profiles.objects.filter(Q(user_id__startswith=query) | Q(name__startswith=query))
}
return render(request, 'FB_search/home.html', context)
2) вызов функции выше в моей конечной точке, например:
def api_search(request):
if request.method == "GET":
query = request.GET.get('q')
search = 'some API with {query} inside it'
search_query(request,search,query)
Когда я пытаюсь вызвать функцию «поисковый запрос», я получаю указанную ошибку.
Есть предложения?
Спасибо.
Ответ №1:
Вы не возвращаете возвращаемое значение search_query
, вы должны вернуть его:
def api_search(request):
if request.method == "GET":
query = request.GET.get('q')
search = 'some API with {query} inside it'
return search_query(request,search,query)