Django에서 Nav Bar Search Box를 수행하는 가장 좋은 방법은 무엇입니까?

StackOverflow https://stackoverflow.com/questions/1610934

  •  05-07-2019
  •  | 
  •  

문제

각 페이지 상단에 나타나는 NAV 막대에 검색 상자를 통합하고 싶습니다 (이 stackoverflow 페이지 상단에 내가 말하는 내용의 예가 있습니다).

아마도 nav.html은 다음과 같이 보일 수 있습니다.

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

아마도 forms.py는 다음을 포함 할 수 있습니다.

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

건식 원리를 사용하면 Views.py가 다음과 같은 모든 페이지에서 '쿼리'를 찾고 싶지 않습니다.

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...

검색 쿼리를 처리하고 결과를 표시하는 페이지를 쉽게 프로그래밍 할 수 있습니다. 검색어를 가장 잘 추출하고 사용자를 해당 검색 페이지로 지시하는 방법 (httpresponserEdirect ( '/results/? query =' + query))은 모든 페이지에서 요청을 제거하지 않고 어떻게합니까?

도움이 되었습니까?

해결책

검색 양식에 공통 검색 URL을 얻으십시오.

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

URL을 하드 와이어하고 싶지 않은 경우 URL 리버스 조회 기능을 사용하십시오 ...

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

질문을 오해하지 않으면 양식이 현재 페이지를로드 한 동일한 URL로 가져와야한다고 생각했을 것 같습니다.

다른 팁

우리는 a를 사용합니다 Google CSE 우리 사이트 중 하나에서, 당신이 얻을 수있는만큼 간단합니다. 몇 가지 기능이 켜질 수 있지만 사소하고 모든 표준 Google Goodness ™를 얻을 수 있습니다.

  1. Joe Holloway가 제안한대로 별도의보기를 사용하십시오.
  2. 형태의 전원을 사용합니다

    def ProductsPage(request):
        search_form = NavSearchForm(request.GET)
        if search_form.is_valid():
            ....
    
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top