2013-06-03 10 views
8

Quindi sto cercando di ottenere qualcosa di molto semplice. Voglio inserire un termine nella mia casella di ricerca e visualizzarlo nella pagina risultante.Scrivere un modulo di ricerca molto semplice in Django

mio HTML per la forma è

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

Il views.py assomiglia a questo:

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

E infine il modello di risultati contiene:

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

Ecco gli URL. py

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

Non viene visualizzato nulla nello spazio {{ query }}.

+0

Puoi pubblicare il tuo 'urls.py'? –

risposta

8

Ok, quindi si suppone che gestisce la ricerca nella vostra views.py azione per essere search ma come sospettavo nella tua urls.py non chiami il metodo search ovunque.

Dove si esegue il metodo search?

Urls dovrebbe essere simile a questo:

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

Nota l'attributo action nel modulo

È action="/results/". Ciò significa che la visualizzazione dei risultati è quella che dovrebbe gestire il modulo. Puoi anche cambiarlo in action="/search/" e avere i tuoi url in questo modo:

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