我第一次实施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变量传递,有什么办法可以在这里访问它吗?
谢谢。
答案 0 :(得分:1)
检查How to access HttpRequest from urls.py in Django
然后你的代码看起来像
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),
)
通常最好明确地编写一个视图来调用相应的搜索视图。