Отображение результатов поиска Django_Filter на странице искомого имущества
Я пробовал различные варианты и, похоже, не могу понять, как показать искомое имущество с главной страницы на странице поиска. В принципе, у меня есть два шаблона - главная страница и страница искомого объекта. У меня есть форма поиска на главной странице, и я хотел бы отобразить результаты на другой странице.
Мой views.py для главной страницы
def home(request,):
properties = Property.objects.all()[:5]
context = {"property": property, "properties": properties}
return render(request, "base/index.html", context)
Мои взгляды на страницу поиска
def prop_search(request,):
property = Property.objects.all()
properties = Property.objects.all()
images = Image.objects.filter(property__in=property.all())
propFilter = PropertyFilter(request.GET, queryset=property)
count = propFilter.qs.count()
context = {
"propFilter": propFilter,
"property": property,
"properties": properties,
"images": images,
'paginator':paginator,
}
return render(request,'base/property-list.html', context)
My Urls.py
path("", views.home, name="home"),
path("add-property", views.addProperty, name="addProperty"),
path("prop_search", views.prop_search, name="prop_search"),
Вы пишете, что у вас есть форма поиска на главной странице. Вы можете использовать action, чтобы указать, куда вы хотите вернуть результат.
<form method="post" action="/your way/">
В данном случае форма вызывается через представление 'index3' с помощью шаблона 'index3.html'. В action="/bboard/name/" вы должны написать свой путь для отправки результата. В представлении 'name' вы получаете данные через запрос. Например, метод request.method. В данном случае у меня он POST. Доступ к данным через request.POST.get("name"). Это открывает доступ к полю "name". Данные представлены в виде словаря. Что ж, тогда из этих данных можно составить словарь и отправить его на рендер.
В моем случае результат отправляется в представление 'name', где полученное имя отображается на странице.
урлы
urlpatterns = [
path("index3/", index3),
path("name/", name),
]
views (в index3 пропишите путь к шаблону)
def index3(request):
return render(request, "bboard/index3.html")
def name(request):
print(request)
name = request.POST.get("name", "Undefined")
return HttpResponse(f"<div>Name: {name} <div>")
шаблоны: index3.html
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
</head>
<body>
<form method="post" action="/bboard/name/">
{% csrf_token %}
<p>Name:<br> <input name="name" /></p>
<input type="submit" value="Send" />
</form>
</body>
</html>