2012-05-06 46 views
1

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

我跟着干草堆文档,并可被

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( '位置',USER_LOCATION,d(MI = 5) )

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

谢谢。

回答

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

通常情况下它能够更好地明确写入一个视图来调用相应的搜索视图。

+6

'通常最好明确地写一个视图来调用相应的搜索视图。 - 是的,不要将'urls.py'变成伪视图控制器。 –