-1
我把haystack + elasticsearch包含到我的django项目中,这个项目是由官方干草堆文档提供的。搜索工作正常,但结果显示在单独的页面(search.html)中。我需要在我放置搜索查询的同一页面上显示搜索结果。 我将搜索模板包含到我的base.html中,如下所示:{%include'search/search.html'%} 我的模板位于不同的目录中:templates/students/base.html和templates/search/search.html。据我了解,干草堆使用自己的/search/search.html来显示搜索结果。我可以通过哪种方式更改该行为,如何在同一页面上显示结果?请帮忙!如何在SAME页面显示搜索结果(django + haystack + elasticsearch)?
urls.py:
from django.conf.urls import patterns, include, url
from django.contrib import admin
from students.views.students import StudentUpdateView
from students.views.students import StudentDeleteView
from students.views.students import StudentAddView
from students.views.groups import GroupDeleteView
from students.views.journal import JournalView
urlpatterns = patterns('',
#haystack search url
(r'^search/', include('haystack.urls')),
# main page url
url(r'^$', 'students.views.students.students_list', name ='home'),
search.html:
<form method="get" action="">
<table>
{{ form.as_table }}
<tr>
<td> </td>
<td>
<input type="text" name="q">
<button type="submit">Search</button>
</td>
</tr>
</table>
{% for student in page.object_list %}
<p><span style= "color:blue">Student:</
span> {{ student.object.first_name }} {{student.object.last_name }}</p>
<p>Ticket: {{ student.object.ticket }}</p>
<p>Group: {{ student.object.student_group }}</p>
{% empty %}
<p>No results found.</p>
{% endfor %}
seach_indexes.py:
from haystack import indexes
from students.models.students import Student
class StudentIndex(indexes.SearchIndex, indexes.Indexable):
text = indexes.CharField(document=True, use_template=True)
last_name = indexes.CharField(model_attr='last_name')
def get_model(self):
return Student
def index_queryset(self, using=None):
return self.get_model().objects.all()
Jahongir,感谢您的答复!什么是“custom_search”?模板的名字?请提供更多细节。 – Andriy
@AndriyKravchenko,'custom_search'是url的名称。这是django如何处理网址。也就是说,不要像'/ path/to/view'那样写URL,你可以优雅地说'module_name:view_name'。阅读更多[这里](https://docs.djangoproject.com/en/1.8/topics/http/urls/) –