Это представление работает, когда запрос находится в базе данных.
def search(request):
if 'q' in request.GET and request.GET['q']:
q = request.GET['q']
q_school = Lawyer.objects.filter(last__icontains=q).values_list('school', flat=True)
q_year = Lawyer.objects.filter(last__icontains=q).values_list('year_graduated', flat=True)
lawyers = Lawyer.objects.filter(school__icontains=q_school[0]).filter(year_graduated__icontains=q_year[0]).exclude(last__icontains=q)
return render_to_response('search_results.html', {'lawyers': lawyers, 'query': q})
else:
return HttpResponse('Please submit a search term.')
Итак, если q = delelle , то в базе данных будут найдены другие юристы, окончившие ту же школу в том же году.
если q = коллинз и коллинз есть в базе данных, но нет других юристов, окончивших ту же школу в том же году, тогда выдается соответствующее сообщение об ошибке «Ни один юрист не соответствует вашим критериям поиска». 1010 *
Но если q = moritz и в базе данных нет адвоката по имени moritz
, это выдает внутреннюю ошибку сервера 500.
Я не понимаю обозначение request.GET['q']
или как я могу это исправить, чтобы я мог добавить соответствующий текст для случая, когда запрос отсутствует в базе данных. Можете ли вы указать мне в правильном направлении? Благодаря.
Изменить ответ Энтони Хэтчкинс
Приведенный ниже код работает без сообщения об ошибке. Я постараюсь включить остальные в ближайшее время:
def search(request):
if 'q' in request.GET and request.GET['q']:
q = request.GET['q']
lawyer = Lawyer.objects.filter(last__icontains=q)
if len(lawyer)==0:
return render_to_response('not_in_database.html', {'query': q})
else:
q_school = Lawyer.objects.filter(last__icontains=q).values_list('school', flat=True)
q_year = Lawyer.objects.filter(last__icontains=q).values_list('year_graduated', flat=True)
lawyers = Lawyer.objects.filter(school__icontains=q_school[0]).filter(year_graduated__icontains=q_year[0]).exclude(last__icontains=q)
return render_to_response('search_results.html', {'lawyers': lawyers, 'query': q})
else:
return HttpResponse('Please submit a search term.')