Проверить, является ли переданный контекст Пустым в шаблоне

Я пытаюсь добиться того, что если контекст пуст или если переменная STUDENT пуста, вместо того, чтобы вернуть всех студентов. он должен вернуть ни одного и в шаблоне показать No results found. В настоящее время, когда в q ничего не хранится, мой шаблон выводит всех студентов.

в просмотрах.

def student_home(request):
q = request.GET.get('q') if request.GET.get('q') != None else ""

students = Student.objects.filter(Q(first_name__icontains=q) | Q(last_name__icontains = q) | 
Q(grade__icontains=q))
context = {'students': students}
return render(request, 'StudentManager/home.html', context)

поисковая панель в NAVBAR.

<form class="d-flex" role="search" action='{% url 'student_home' %}'>
          <input class="form-control me-2" type="search" name='q' placeholder="Search Student" 
aria-label="Search">
          <button type="submit" class="btn" style="background: #fff2df;">Search</button>
        </form>
   

Ваши вопросы сбивают с толку: в вашем коде не существует переменной STUDENT.

вы можете просто проверить переменную students в вашем шаблоне:

{% if not students %}
No results found
{% endif %}

Вы получаете всех студентов с q = "", потому что Student.objects.filter(first_name__icontains="") означает для django возврат всех Student, где first_name не None.

Попробуйте это

def student_home(request):
    q = request.GET.get('q', None)
    if q:
        students = Student.objects.filter(Q(first_name__icontains=q) | Q(last_name__icontains = q) | Q(grade__icontains=q))
    else:
        students = []
    context = {'students': students}
    return render(request, 'StudentManager/home.html', context)
Вернуться на верх