Создание строки поиска с помощью Django

У меня есть список страниц в формате markdown, отображаемый на индексной странице. Я хочу сделать строку поиска, используя django, которая отображает искомые элементы списка, поэтому я написал этот код для того, чтобы строка поиска получала определенный запрос

в файле views.py:

def index(request):
    x = util.list_entries()
    for entryy in x:
        if 'q' in request.GET:
            q = request.GET['q']
            data = x.entryy.filter(entryy__icontains = q)
        else:
            data = x
    return render(request, "encyclopedia/index.html", {
        "entries": data
    })

в urls.py:

urlpatterns = [
    path("", views.index, name="index")]

в layout.html:

  <form action="{% url 'index' %}" method = "get">
                    {% csrf_token %}
                    <input class="search" type="search" name="q" placeholder="Search Encyclopedia">
                </form>

util.list_entries() fuction:

def list_entries():
    """
    Returns a list of all names of encyclopedia entries.
    """
    _, filenames = default_storage.listdir("entries")
    return list(sorted(re.sub(r"\.md$", "", filename)
                for filename in filenames if filename.endswith(".md")))

когда я ввожу что-либо в строку поиска, появляется вот это

ко мне :

введите описание изображения здесь

так в чем проблема?

поля класса вашей модели - это ваши атрибуты, функция фильтрации пытается добраться до несуществующего атрибута. Если ваша модель называется Entry и поле модели - title, вы можете импортировать Entry в ваши представления, и фильтровать через его поля title, используя __contains

models.py

class Entry(models.Model):
    title = models.CharField(null=False, blank=False)

views.py

from myApp.models import Entry
...

def list_entries():
    ...
    data = Entry.objects.filter(title__contains = q)
Вернуться на верх