2009-10-23 2 views
2

각 페이지의 상단에 나타나는 탐색 모음에 검색 상자를 통합하고 싶습니다. (이봐,이 StackOverflow 페이지의 맨 위에 내가 말한 내용의 예제가 있습니다.) forms.py 포함 할 수 아마도Django에서 탐색 모음 검색 상자를 수행하는 가장 좋은 방법은 무엇입니까?

<ul id="menu"> 
    <li><a href="/products"></li> 
    <li><a href="/service"></li> 
    <li>{{ nav_search_form.as_p }}</li> 
</ul> 

:

class NavSearchForm(forms.Form): 
    query = forms.CharField(max_length=30, required=False) 

을 나는 views.py이 찾고있을하지 않을 DRY 원칙처럼

는 아마도 nav.html이 보일 수 있습니다 '쿼리'와 같은 모든 페이지 :

def ProductsPage(request): 
    search_form = NavSearchForm() 
    if request.GET.has_key('query'): 
     query = request.GET['query'].strip() 
    # deal with 'Products' here... 

def ServicePage(request): 
    search_form = NavSearchForm() 
    if request.GET.has_key('query'): 
     query = request.GET['query'].strip() 
    # deal with 'Service' here... 

나는 쉽게 검색 쿼리를 처리하고 r 어른들. 검색 조건을 가장 잘 추출하고 사용자를 해당 검색 페이지로 안내하려면 어떻게해야합니까? (HttpResponseRedirect ('/ results /? query ='+ query)를 반환하십시오.) 요청을 스트립하지 않고 모든 페이지에서 가져 옵니까?

답변

3

검색 양식에 일반 검색 URL을 입력하십시오. 내가 질문을 오해하지 않는 한

<form action="/search/" method="get"> 
... 
</form> 

당신이 URL을 하드 와이어하지 않으려면 검색 기능을 반전 URL을 사용하여이 ...

<form action="{% url my-search-view %}" method="get"> 
... 
</form> 

, 그것은 어쩌면 당신은 형태가 있다고 생각했다처럼 들린다 현재 페이지를로드 한 것과 동일한 URL로 이동/게시하십시오.

+0

그에 따라 조정 능력을 형성한다. –

+0

+1. 원하는 경우 POST 용으로도 작동합니다. –

+0

@ 대니얼 예프. 검색의 경우 URL을 북마크에 추가하거나 이메일을 통해 보낼 수 있기 때문에 GET을 선호합니다. –

0

우리 사이트 중 하나에서 Google CSE을 사용하며 그것이 얻을 수있는만큼 간단합니다. 사용할 수있는 몇 가지 기능이 있지만 사소한 것이므로 모든 표준 Google Goodness ™을 얻을 수 있습니다.

0
  1. 조 할로 웨이가 제안한 것과 다른 견해를 사용하십시오.
  2. 사용하면 대신 '정적'양식 제출의 자바 스크립트를 사용하는 경우

    def ProductsPage(request): 
        search_form = NavSearchForm(request.GET) 
        if search_form.is_valid(): 
         .... 
    
관련 문제