1

我是第一次实现 django-haystack,需要进行地理空间搜索。是否可以从 urls.py 访问用户输入?

我遵循了 haystack 文档,并且能够使用

from django.conf.urls.defaults import *
from haystack.forms import ModelSearchForm, HighlightedSearchForm
from haystack.query import SearchQuerySet
from haystack.views import SearchView
from haystack.views import SearchView, search_view_factory

**sqs = SearchQuerySet().all()**

urlpatterns = patterns('haystack.views',
url(r'^$', search_view_factory(
    view_class=SearchView,
    template='search/search.html',
    searchqueryset=sqs,
    form_class=HighlightedSearchForm
    ), name='haystack_search'),
)

我需要做sqs = SearchQuerySet().dwithin('location', user_location, D(mi=5))

其中 user_location 将是用户输入并将通过 GET 变量传递,有什么方法可以在这里访问它吗?

谢谢你。

4

1 回答 1

1

检查如何在 Django 中从 urls.py 访问 HttpRequest

然后你的代码看起来像

urlpatterns = patterns('haystack.views',
url(r'^$', lambda request, *args, **kwargs: search_view_factory(
    view_class=SearchView,
    template='search/search.html',
    searchqueryset=SearchQuerySet().dwithin('location', request.GET.get('user_location'), D(mi=5)),
    form_class=HighlightedSearchForm
    ), name='haystack_search')(request, *args, **kwargs),
)

通常最好显式地编写一个视图来调用相应的搜索视图。

于 2012-05-06T08:34:43.680 回答