Django에서 Nav Bar Search Box를 수행하는 가장 좋은 방법은 무엇입니까?
-
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 ™를 얻을 수 있습니다.
- Joe Holloway가 제안한대로 별도의보기를 사용하십시오.
형태의 전원을 사용합니다
def ProductsPage(request): search_form = NavSearchForm(request.GET) if search_form.is_valid(): ....
제휴하지 않습니다 StackOverflow