如何在同一页面上显示搜索结果(django+haystack+elasticsearch)



我将haystack+elasticsearch加入到我的django项目中,然后是官方的haystack文档。搜索工作良好,但结果显示在单独的页面(search.html)。我需要显示同一页上的搜索结果,我把搜索查询从。我像这样在base.html中包含搜索模板:{% include 'search/search.html' %}我的模板在不同的目录:templates/students/base.html和templates/search/search.html。据我所知,haystack使用自己的/search/search.html来显示搜索结果。如何改变这种行为,如何在同一页面上显示结果?请帮助!

<标题> 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>&nbsp;</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 }}&nbsp;{{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()

你可以创建一个自定义视图并在你的模板中使用:

class CustomSearchView(SearchView):
    template_name='/path/to/template.html'

和你的urls.py:

urlpatterns = patterns('',
    url(r'^custom_search$', CustomSearchView.as_view(), name='custom_search'),
)

在你的模板中,在你的表单中调用这个视图:

<form method="get" action="{% url 'search:custom_search' %}">

最新更新