このチュートリアルに基づいて、スフィンクス検索、postgresql、django を使用して全文検索を構築しようとしています: http://pkarl.com/articles/guide-django-full-text-search-sphinx-and-django-sp / . sphinx と postgresql のすべてのセットアップが完了し、動作しますが、 Sample 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 例外を取得し続けます。私がここでやっている間違いはありますか?前もって感謝します。
ここに私のスニペットがあります:
Urls.py
(r'^search/(.*)', search),
Views.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))
search.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 %}