2013-06-03 12 views
8

Staram się więc osiągnąć coś bardzo prostego. Chcę wprowadzić termin w moim polu wyszukiwania i wyświetlić go na stronie wynikowej.Pisanie bardzo podstawowego formularza wyszukiwania w Django

Moje HTML do formularza jest

<form method="get" action="/results/" class="navbar-form pull-right"> 
<input type="text" id="searchBox" class="input-medium search-query" name="q" placeholder="Search"> 
<input type="submit" class="btn" value="Search" > 
</form> 

views.py wygląda następująco:

def search(request): 
    query = request.GET['q'] 
    t = loader.get_template('template/results.html') 
    c = Context({ 'query': query,}) 
    return HttpResponse(t.render(c)) 

I wreszcie wynik szablon zawiera:

<div>You searched for: {{ query }} </div> 

Oto adresy URL. py

urlpatterns = patterns('', 
url(r'^home/$', 'search.views.home'), 
url(r'^results/$', 'search.views.results'), 

Nic nie pojawia się w przestrzeni {{ query }}.

+0

Czy możesz opublikować swoje 'urls.py'? –

Odpowiedz

8

Ok więc manipulowania wyszukiwania w views.py akcja ma być search ale jak podejrzewałem w swojej urls.py nie wywołać metodę search wszędzie.

Gdzie można wykonać metodę search?

Urls powinno być tak:

urlpatterns = patterns('', 
url(r'^home/$', 'search.views.home'), 
url(r'^results/$', 'search.views.search'), 
# or at least have a url for the search view 

Uwaga atrybut działania w postaci

Jest action="/results/". Oznacza to, że widok wyników to ten, który ma obsługiwać formularz. Możesz również zmienić to na action="/search/" i mieć swoje adresy URL w ten sposób:

urlpatterns = patterns('', 
url(r'^home/$', 'search.views.home'), 
url(r'^results/$', 'search.views.results'), 
url(r'^search/$', 'search.views.search'),