django - 从urls.py访问GET变量

时间:2012-05-06 08:13:00

标签: django django-urls django-haystack geodjango

我第一次实施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变量传递,有什么办法可以在这里访问它吗?

谢谢。

1 个答案:

答案 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),
)

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