Контекст должен быть dict, а не модулем

Когда я фильтрую свою панель поиска, я получаю эту ошибку. Я не уверен, что я делаю неправильно здесь

Смотрю этот урок: https://thewikihow.com/video_llbtoQTt4qw&t=3399s

просмотры.py

class pplList(LoginRequiredMixin,ListView):
        model = People
        context_object_name = 'people'
        def get_context_data(self, **kwargs):
            search_input = self.get.GET.get('search-area') or ''
            if search_input:
                context['people'] = context['people'].filter(name__icontains=search_input)
            return context

people_list.html

{%if request.user.is_authenticated %}
    <p>{{request.user}}</p>
    <a href = "{% url 'logout' %}">Logout</a>
{% else %}
    <a href = "{% url 'login' %}">Login</a>
{% endif %}

<hr>
<h1>Interviewee Dashboard {{color}}</h1>


<a href = "{% url 'pplCre' %}"> Add Candidates</a>
<form method = "get">
    <input type = 'text' name = 'search-are'>
    <input type = 'submit' value = 'Search'>

</form>
<table>
    <tr>
        <th> Item</th>
        <th> </th>

    </tr>
    {% for people in people %}
    <tr>
        <td>{{people.name}}</td>
        <td><a href = "{% url 'pplDet' people.id %}">View</a></td>
        <td><a href = "{% url 'pplUpd' people.id %}">Edit</a></td>
        <td><a href = "{% url 'pplDel' people.id %}">Delete</a></td>
    </tr>
    {% empty %}
    <h3>No items in list</h3>
    {% endfor %}
</table>
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
1
0
77
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Есть небольшие ошибки, как и должно быть self.request.GET.get('search-area'), также вы не вызвали метод super(), поэтому попробуйте это представление:

class pplList(LoginRequiredMixin,ListView):
    model = People
    context_object_name = 'people_list'
    def get_context_data(self, **kwargs):
        context=super().get_context_data(**kwargs)
        search_input = self.request.GET.get('search-area', False)
        if search_input:  
           context['people']= People.objects.filter(name__icontains=search_input)
        return context

В Html имя поля search-are и доступ к нему в виде self.request.GET.get('serach-area', False) kindly change its name to search-area` во входном теге Html.

Кроме того, представления на основе классов обычно записываются в PascalCase, поскольку они являются классами Python и требуют, чтобы их имя было записано как имя модели в качестве префикса, а фактическое имя представления — в виде суффикса, поэтому оно должно быть PeopleListView.

Исправлена ​​ошибка, но искомый элемент не отображается

Vignesh 05.11.2022 23:10

все еще на странице со всеми людьми

Vignesh 05.11.2022 23:25

@Vignesh Пожалуйста, обратите внимание, что в шаблоне у вас есть поле search-are, а не search_area, поэтому измените его имя в шаблоне правильно.

Sunderam Dubey 06.11.2022 03:01

@Vignesh Вам нужно изменить его на sesrch-area во входном теге html, чтобы правильные искомые элементы набора запросов попадали в шаблон.

Sunderam Dubey 06.11.2022 03:18

Другие вопросы по теме