2012-05-06 61 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'變成僞視圖控制器。 –