Не могу сделать форму для поиска в django3
вот мой views
from django.shortcuts import render
from .models import *
from django.views.generic import ListView
# simplePost
# Create your views here.
def index(req):
posts = simplePost.objects.all()
data = {
"posts": posts
}
return render(req, 'main/index.html', data)
class search(ListView):
def get_queryset(self):
return simplePost.objects.filter(title=self.request.GET.get('q'))
def get_context_data(self, *args, **kwargs):
context = super().get_context_data(*args, **kwargs)
context["q"] = self.request.GET.get('q')
return context
Вот simplePost_list.html (результаты поиска должны быть здесь)
{% extends '../base/base.html' %}
{% block title %}
Результат Поиска
{% endblock %}
{% block content %}
<div class="content">
{% for i in context %}
<div class="post important_{{ i.important }}">
<h3 class="title">{{ i.title }}</h3>
<p class="text">{{ i.text }}</p>
<b class="date">{{ i.date }}</b>
</div>
{% endfor %}
</div>
{% endblock %}
сама форма
<form action="{% url 'search' %}" method="get" class="search-form" required="">
{% csrf_token %}
<input type="search" name="q" class="search" placeholder="Поиск записей
в блоге">
</form></li>
Простите что криво)
при поиске названия модели simplePost строка поиска работает правильно но ничего не выводиться, подскажите. вдруг зря паникую)
Ответы (1 шт):
Автор решения: Vadim.Sharoikin
→ Ссылка
Очень странная фраза поиска работает правильно но ничего не выводиться
На самом деле скорее всего у вас поиск и работает правильно. Но вы ошиблись с выводом результата поиска в шаблон.
Вместо {% for i in context %} надо писать {%for i in object_list%}
Но конечно лучше будет в класс поиска (во views) добавить что-то вроде
context_object_name="result_serch"
и тогда в шаблоне
{%for i in result_serch%}