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

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

Просматриваю этот учебник: https://www.youtube.com/watch?v=llbtoQTt4qw&t=3399s

views.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>

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

class pplList(LoginRequiredMixin,ListView):
    model = People
    context_object_name = 'people'
    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

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

Вернуться на верх