我正在尝试根据本教程使用 sphinx 搜索、postgresql 和 django 来构建全文搜索:http: //pkarl.com/articles/guide-django-full-text-search-sphinx-and-django-sp /。为 sphinx 和 postgresql 完成了所有设置,它可以工作,但是在到达示例 Django 代码部分时遇到了麻烦。
在 django views & urlconf 中,我只用自己的模型将 *search_results* 的功能更改为search和Story模型。对于 URLConf,我只将 *search_results* 更改为搜索,就像在视图上一样,搜索模板上没有任何更改。
因此,当我尝试从 Django 中的表单中搜索时,出现异常:
TypeError at /search/
list() takes exactly 1 argument (0 given)
我还尝试通过更改 urlpattern 和视图定义来根据 steyblind 的评论进行更改,如下所示:
(r'^search/(.*)?', search),
def search(request, query=''):
但仍然保持获取 TypeError 异常。我在这里做错了吗?提前致谢。
这是我的片段:
网址.py
(r'^search/(.*)', search),
视图.py
def search(request, query):
try:
if(query == ''):
query = request.GET['query']
results = Flow.search.query(query)
context = { 'flows': list(results),'query': query, 'search_meta':results._sphinx }
except:
context = { 'flows': list() }
return render_to_response('search.html', context, context_instance=RequestContext(request))
搜索.html
{% extends "base.html" %}
{% block main %}
<div>
<form action="/search/" method="GET">
<input type="text" name="query"/>
<input type="submit">
</form>
{% if flows %}
<p>Your search for “<strong>{{ query }}</strong>” had <strong>{{ search_meta.total_found }}</strong> results.</p>
<p>search_meta object dump: {{ search_meta }}</p>
{% endif %}
<hr/>
{% for s in flows %}
<h3><a href="{{ s.get_absolute_url }}">{{ s.title }}</a></h3>
<p>(weight: {{ s.sphinx.weight }})</p>
<p>story.sphinx object dump: {{ s.sphinx }}</p>
{% empty %}
<p>YOU HAVEN'T SEARCHED YET.</p>
{% endfor %}
</div>
{% endblock %}